回答編集履歴
3
説明補足
test
CHANGED
@@ -1,17 +1,39 @@
|
|
1
|
-
|
1
|
+
回答を大幅に修正しました。
|
2
|
-
|
3
|
-
[このあたりを参考して](https://www.javadrive.jp/perlfunc/io/index1.html)
|
4
2
|
|
5
3
|
|
6
4
|
|
7
|
-
っと、
|
8
|
-
|
9
|
-
|
5
|
+
1.オープンのモードについて
|
10
|
-
|
11
|
-
失礼しました。
|
12
|
-
|
13
|
-
|
14
6
|
|
15
7
|
添え字jのループ内でopen~closeしていますが、オープンモードが毎回 ">"なのでファイルが毎回トランケートされてしまいますね。
|
16
8
|
|
17
9
|
">>"に変更すれば良いかと。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
2.正しいインデントを(これに惑わされました)
|
14
|
+
|
15
|
+
```Perl
|
16
|
+
|
17
|
+
while ( my $line= <$infh>) {
|
18
|
+
|
19
|
+
$i++;
|
20
|
+
|
21
|
+
if ($i == 1){
|
22
|
+
|
23
|
+
next;#skip label
|
24
|
+
|
25
|
+
}
|
26
|
+
|
27
|
+
```
|
28
|
+
|
29
|
+
最後のブレスは一見whileの終わりに見えますが、whileループ内のif分の終わりです。
|
30
|
+
|
31
|
+
これでは1回目のforループで入力ファイルを全て読み終わって、全て出力ファイル1に書き込んで
|
32
|
+
|
33
|
+
しまいます。
|
34
|
+
|
35
|
+
2回目以降のforループは入力ファイルが既にEOFなので空振りするだけです。
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
インデントは正しく書きましょう。
|
2
追記
test
CHANGED
@@ -9,3 +9,9 @@
|
|
9
9
|
open(my $fh, ...)という書き方もありですね。
|
10
10
|
|
11
11
|
失礼しました。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
添え字jのループ内でopen~closeしていますが、オープンモードが毎回 ">"なのでファイルが毎回トランケートされてしまいますね。
|
16
|
+
|
17
|
+
">>"に変更すれば良いかと。
|
1
追記
test
CHANGED
@@ -1,3 +1,11 @@
|
|
1
1
|
open関数の第1パラメータはファイルハンドルですよ。(スカラ変数ではありません)
|
2
2
|
|
3
3
|
[このあたりを参考して](https://www.javadrive.jp/perlfunc/io/index1.html)
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
っと、
|
8
|
+
|
9
|
+
open(my $fh, ...)という書き方もありですね。
|
10
|
+
|
11
|
+
失礼しました。
|