Perlについての質問箱 23箱目
■ このスレッドは過去ログ倉庫に格納されています
0418デフォルトの名無しさん
2006/03/29(水) 12:37:40より
「
そしてこれは、open呼び出しの必要を削除した、そのコードの変形です:
my $text = do { local( @ARGV, $/ ) = $file ; <> } ;
$fileの中のファイル名はローカル化された@ARGVに設定され、
nullのファイル・ハンドルは@ARGVの中のファイルからデータを読み込むために使われます。
スカラーに代入する代わりに、上記の丸呑み全てを配列に代入することができます。
そしてそれはファイルを取得しますが、($/が行の終わりの印として使われて)行に分割されます。
」
my $text = do { local( @ARGV, $/ ) = $file ; <> }
っていう便利なコードで、openも使わずに$fileの内容を一気読みで丸呑みして$text
に代入できるというのはわかったのですが、
そのあとの
「スカラーに代入する代わりに、上記の丸呑み全てを配列に代入することができます。」
「行に分割されます」
というのがわからない。
上記で取得した$textに対して
@list = $text;
としたって
$textの内容が$list[0]に代入されるだけで行には分割されない
$textの内容が
a
b
c
だったとしたら、$list[0]=a,$list[1]=b,$list[2]=cとはならない。
どうして?
■ このスレッドは過去ログ倉庫に格納されています