回答編集履歴

3

説明補足

2020/05/22 05:38

投稿

DreamTheater
DreamTheater

スコア1095

test CHANGED
@@ -1,17 +1,39 @@
1
- open関数の第1パラメータはファイルハンドルですよ(スカラ変数ではありません)
1
+ 回答を大幅に修正しました
2
-
3
- [このあたりを参考して](https://www.javadrive.jp/perlfunc/io/index1.html)
4
2
 
5
3
 
6
4
 
7
- っと、
8
-
9
- open(my $fh, ...)とう書き方もありですね。
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

追記

2020/05/22 05:38

投稿

DreamTheater
DreamTheater

スコア1095

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

追記

2020/05/22 03:58

投稿

DreamTheater
DreamTheater

スコア1095

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
+ 失礼しました。