ふじ
2000/05/26(金) 23:19:41
最初にお断り。
上記のスクリプトは大崎氏のページ、
http://www.din.or.jp/~ohzaki/perl.htm#JP_Split
から拝借したものです。
>「あとはそれを適当に・・・」で具体的にどうやるか検討がつきません。
$_[0] に最初の一文字、
$_[1] に二文字目、
$_[2] に三文字目
…
というように分割されていますので、
「全角半角問わずともかく15文字」なら
$str = join("", @_[0..14]);
「文字列の長さが 15 byte 以内」なら
for(@_){
last if length($str . $_) > 15;
$str .= $_;
}
とかですか。
「osg」は演算子ではなくて、パターンマッチのオプションです。
$ perldoc perlop
(略)
Options are:
c Do not reset search position on a failed match when /g is in effect.
g Match globally, i.e., find all occurrences.
i Do case-insensitive pattern matching.
m Treat string as multiple lines.
o Compile pattern only once.
s Treat string as single line.
x Use extended regular expressions.
(略)
o は パターンを一回しかコンパイルしない
(変数でマッチさせるときに、変数の中身がパターンマッチの途中で変化しないときに
指定すると速度アップ)
g は、一度マッチしたら、マッチした後ろの文字列について繰り返し
パターンマッチを試みる。
s は、改行文字(\n)も . でマッチするようにする。
詳しくは、Perlの本を参照された方がよろしいかと。