
お世話になります。
題名にあります通りなんですが、1_1から1_5にカウントアップしたら
2_1から2_5へとカウントアップするようなスクリプトを考えているのですが
下記の例ですと、1111122222333334444455555となってしまいなす。
どなたか良きアドバイス頂けないでしょうか。宜しくお願いします。
@list = (0, 1, 2, 3, 4, 5);
foreach $b(@list) {
for ( $a = 1 ; $a <= 5 ; $a++ ) {
print "";
print "$a_$b\n" ;
} }
No.1ベストアンサー
- 回答日時:2005/12/04 18:18
foreach my $first (1..5) {
foreach my $second (1..5){
print "${first}_$second\n";
}
}
こんな感じの処理でしょうか?
No.3
- 回答日時:2005/12/04 19:11
# 示されたプログラムを実行すると、最初に0も5回出力されると思うので、@list = (1, 2, 3, 4, 5); の間違いですよね?
そういう出力になるのは、print "$a_$b\n" で$a_という変数と解釈されているからでしょう。$a_という変数はないのでその部分は何も出力されず、$bだけが展開されている。
これを解決するには、No.1の方も示されている通り、$aの代わりに${a}とするなどすればいいです。print $a, "_$b\n" とか他にも解決策はいろいろありますが。
でもこう書き換えても望みの結果は得られないでしょう。先に動かしたい数字は_の右の数字なのですから、print "${b}_$a\n" という風にaとbを逆にするとかしないといけないと思いますよ。
No.2
- 回答日時:2005/12/04 19:11
print "$a_$b\n";
この段階で
$a_
がひとつの変数とみなされています。
つまり、$aとは別に、グローバルに$a_が定義されてしまっている状態になっています。
解決策は、
print "${a}_$b";
とすることなどがあげられますが、
こういったあいまいな記述によるエラーを防ぐためには、
use strict;
と最初に宣言するといいでしょう。(文法が厳しくチェックされるので、あいまいな記述ができなくなります)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するQ&A
- 1 3の倍数行まで1から数字を挿入し,カウントアップしていく方法
- 2 数字のカウントを上げる際、01と1でカウントをスタートさせたい
- 3 get_magic_quotes_gpc
- 4 行単位のデータ比較とカウントアップ方法について
- 5 Perlでシフトコード変換後の文字列長をカウント
- 6 CGI_Lite.pmをしようしてデータをアップロード
- 7 fetchrow_arrayとfetchrow_hashrefの使い方
- 8 print <<"_HTML_"の中でサブルーチン実行
- 9 phpのmysql_fetch_arrayに該当する関数はありますか?
- 10 @color1 = ('0000ae',・・・,'$user_color')で・・
関連するカテゴリからQ&Aを探す
おすすめ情報
人気Q&Aランキング
-
4
テキストファイルの一部分を抽...
-
5
VBAを使ってHTMLソースから特定...
-
6
カタカナをローマジに変換する。
-
7
VBAで改行コードを判定したい
-
8
ダブルクォーテーションの削除...
-
9
正規表現の否定先読みで、複数...
-
10
ブラウザを使わずコマンドプロ...
-
11
○文字目に文字挿入
-
12
セル内の文字列が日本語か英語...
-
13
正規表現で一つ目の区切り文字...
-
14
【VBA】findの検索条件における...
-
15
split で " または ' で挟まれ...
-
16
テキストファイルを直接置換す...
-
17
エクセル 2つの表の並べ替え
-
18
VBの「As String * 128」とは?
-
19
正規表現または構文で数値の範...
-
20
正規表現で2回以上連続する文字...