- ベストアンサー
Perlのスクリプトで意味が分かりません
for ( 1..$winfo{'LIMIT'} ) { my ( $wkey ) = sprintf( "%03d",$_ ); $wnum{ $wkey } = sprintf( "%s名",$_ ); } とあるのですが、forの括弧の中が、普通と違うので意味が分かりません。 どのような意味になるのでしょうか。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
for文と言えば、 for(my $i=0, $i<@hoge.length; $i++){ #何かの処理 } を想像されるかもしれませんが、foreach文のeachを省略しても perlは、foreach文だなっと解釈して処理してくれます。 つまり省略せずにきちんと書くと foreach my $value ( 1..$winfo{'LIMIT'} ) { my ( $wkey ) = sprintf( "%03d",$value ); $wnum{ $wkey } = sprintf( "%s名",$value ); } のようになり上記の場合 (1..$winfo{'LIMIT'})の1個1個の要素が $valueに格納されて処理がループされるところが my $valueの部分を省略すると暗黙的に$_に格納されることを利用して foreach ( 1..$winfo{'LIMIT'} ) { my ( $wkey ) = sprintf( "%03d",$_ ); $wnum{ $wkey } = sprintf( "%s名",$_ ); } となりforeachはforと書いてもperlではforeachだと認識してくれるので for ( 1..$winfo{'LIMIT'} ) { my ( $wkey ) = sprintf( "%03d",$_ ); $wnum{ $wkey } = sprintf( "%s名",$_ ); } となってます。 ( 1..$winfo{'LIMIT'} )の中身は他の方より説明がありますので 省略させてもらいます。 perlでは省略形式がやたらと多いんで最初は戸惑うことが多いかと思いますが、案外すぐになれることができますんでがんばってください!
その他の回答 (2)
- steel_gray
- ベストアンサー率66% (1052/1578)
#1さんと同じになりますが範囲演算子ってやつですね。 覚えておくとたまに便利です。 http://www.rfs.jp/sb/perl/02/03.html#8.%E7%AF%84%E5%9B%B2%E6%BC%94%E7%AE%97%E5%AD%90
- phoenix343
- ベストアンサー率15% (296/1946)
1から$winfo{'LIMIT'}までという意味だと思いますが。 たとえば$winfo{'LIMIT'}が10だったら1から10ですね。