電子書籍の厳選無料作品が豊富!

自作の掲示板を作ろうと思い、perlの勉強をしている者です。人様の作ったスクリプトを解析しています。以下のスクリプトはライブラリに記述されていたものです。


sub tttt {
my @out = @_;
for (@out) {
s/^\s+//;
s/\s+$//;
}
return wantarray ? @out : $out[0];


このスクリプトなんですが、 s/^\s+//; の部分の「+」と s/\s+$//; の部分の「+$」、 また「return wantarray~」 の三つの部分のスクリプトが、どういった働きをしているの分かりません。専門書やウェブ上のリファレンスも色々調べたのですが・・。

分かる方いらっしゃいましたらご教授下さると幸いです。よろしくお願いします。

A 回答 (2件)

まず前2つの「+」は,正規表現における,「直前の表現を一回以上繰り返し」をあらわします.


「\s」は空白文字一文字を表す正規表現ですので,「\s+」は,「一文字以上の空白文字」になります.
次に,最初の「^」と2番目の「$」は,その正規表現がどこに現れるかを示す記号です.それぞれ,先頭と最後尾にあることを示します.
したがって,「^\s+」は,「最初に空白が一文字以上ある文字列」に,
「\s+$」は「行末に空白が一文字以上ある文字列」にヒットします.
置換構文sはご存知なんですかね.すなわち,この2文で,行の最初と最後の空白を消しているんです.

次に, wantarray ですが,
http://www2u.biglobe.ne.jp/~MAS/perl/ref/wantarr …
によると,このサブルーチンttttを呼び出すときに,何を返り値にしているかで真偽が決まる関数です.
呼び出す時に配列を希望していたら @out 全体を,変数を希望していたら $out[0]だけを返します.
    • good
    • 0
この回答へのお礼

とても分かりやすい説明ありがとうございます。
仰るとおり置換構文sについては事前に調べがついておりました。本当にありがとうございました。助かりました。

お礼日時:2006/02/11 14:09

既に的確な回答が出ていますので、リファレンス本をお薦めしておきます。

unicode や 標準モジュールに関する事以外であればだいたい間に合うと思います。

参考URL:http://www.7andy.jp/books/detail?accd=30527064
    • good
    • 0
この回答へのお礼

情報ありがとうございます!

お礼日時:2006/02/11 14:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!