海外旅行から帰ってきたら、まず何を食べる?

for ( 1..$winfo{'LIMIT'} ) {
my ( $wkey ) = sprintf( "%03d",$_ );
$wnum{ $wkey } = sprintf( "%s名",$_ );
}

とあるのですが、forの括弧の中が、普通と違うので意味が分かりません。
どのような意味になるのでしょうか。
宜しくお願い致します。

A 回答 (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では省略形式がやたらと多いんで最初は戸惑うことが多いかと思いますが、案外すぐになれることができますんでがんばってください!
    • good
    • 0

#1さんと同じになりますが範囲演算子ってやつですね。


覚えておくとたまに便利です。
http://www.rfs.jp/sb/perl/02/03.html#8.%E7%AF%84 …
    • good
    • 0

1から$winfo{'LIMIT'}までという意味だと思いますが。


たとえば$winfo{'LIMIT'}が10だったら1から10ですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!