• ベストアンサー

Perlのスクリプトで意味が分かりません

for ( 1..$winfo{'LIMIT'} ) { my ( $wkey ) = sprintf( "%03d",$_ ); $wnum{ $wkey } = sprintf( "%s名",$_ ); } とあるのですが、forの括弧の中が、普通と違うので意味が分かりません。 どのような意味になるのでしょうか。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • sample_
  • ベストアンサー率76% (20/26)
回答No.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)
回答No.2

#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)
回答No.1

1から$winfo{'LIMIT'}までという意味だと思いますが。 たとえば$winfo{'LIMIT'}が10だったら1から10ですね。

関連するQ&A

専門家に質問してみよう