[Perl] splitの動作について勘違いしてた

こんばんは。
そろそろ旅行の準備が大変なおじいさんです。
つーか、国際免許どうしようか。。。普段運転してないからなあ。。
それはさておき、perlのsplit動作について。

元々は、twitterのxss問題について頭をひねっていた所

 (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について
  http://developer.cybozu.co.jp/kazuho/2010/09/twitter-xss-f73.html

なんていう記事がありまして。
正しいアプローチは、全てのルールを同時に適用すること」という話しがありましたが。

そこで気になったのが、本題とは関係のないsplitの動作。
なんで、区切り文字が出てくるんだろう??とクビをひねってました。

結論から言えば、こういう事なんですよ。

# perl -e 'print join("|", split /,/,q{aaa,bbb,ccc})."\n";'
aaa|bbb|ccc
# perl -e 'print join("|", split /(,)/,q{aaa,bbb,ccc})."\n";'
aaa|,|bbb|,|ccc


http://perldoc.perl.org/functions/split.html

If the PATTERN contains parentheses, additional list elements are created from each matching substring in the delimiter.

1. split(/([,-])/, "1-10,20", 3);

produces the list value

1. (1, '-', 10, ',', 20)


まあ、そういう事でございました。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック