perl -le 'do{ print if(/3/||$_%3==0||$_%5==0) } for(1..49);'のかいせつ

http://codepad.org/zdeQaPMc

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);