perl -le 'do{ print if(/3/||$_%3==0||$_%5==0) } for(1..49);'のかいせつ
perl -le 'do{ print if(/3/||$_%3==0||$_%5==0) } for(1..49);'
for 1 〜 49でくるやつは、指定がない場合 $_に代入される。
そいつ自体は文字でも数値でもありえる
$_=~ /3/ みたいに正規表現でマッチさせる場合は、暗示的に変換されるので
strへの変換 itoa やsprintfはいらない
そして正規表現の場合 $_= ~ は暗示的に指定されるのでいらない
$_%3==0
こういうばあいは数値として扱われる。
print $_
をしているが
このばあい $_ は省略できる
perl -le で改行付き出力
明示すると
do{ print "$_" . "\n" # perl -l オプション if( $_ =~ m/3/ || # - 3 を含むか? 正規表現マッチング $_ % 3 == 0 || # - 3 の倍数 $_ % 5 == 0 ); # - 5 の倍数 } for my $_ (1..49);