『初めての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); # ${変数名} と書けば、変数名の区切りを明示できる