『初めてのPerl』第5章 入出力

  • 行入力演算子:<>
#!/usr/bin/env perl
use v5.12;
use warnings;
while (defined(my $line = <STDIN>)) {
say "I saw $line";
}
# defined($line = <STDIN>) の省略形
while (<STDIN>) {
say "I saw $_";
}
# <STDIN> で1行ずつ読み込むのは、whileの場合だけ。
# foreachだと、全ての行を一度に読み込んで$_ に突っ込む
foreach (<STDIN>) {
say "I saw $_";
}

ダイヤモンド演算子<>:ユーザーが指定した場所から入力を読み取り

#!/usr/bin/env perl
use v5.12;
use warnings;
# このプログラムを ./diamond.pl hoge.txt というコマンドで起動すると、
# hoge.txtの内容を読み取って出力する
while (<>) {
chomp;
say "It was $_ that I saw!";
}

autodie:

#!/usr/bin/env perl
use v5.12;
use autodie;
open HOGE, '>>', 'hoge'; # openが失敗すると自動的にdie

変数名の区切り:

#!/usr/bin/env perl
use v5.12;
use warnings;
$str = "12345";
$width = 10;
printf("%$widths", $str); # $widths が未定義だという警告が出る
printf("%${width}s", $str); # ${変数名} と書けば、変数名の区切りを明示できる

コメントを残す

コメントを残す