[Perl]複数のファイルに違う内容を書き込む
Perlを使って複数ファイルにそれぞれ違う内容を書き込みたいです。
具体的には、コマンドライン入力した$start_no=2、入力ファイルの行数が 3 とすると
tmp1.txtに 2 3 4 5
tmp2.txtに 6 7 8 9
....
と書き込みたいです。
以下のコードでは、指定した出力ファイルtmp1~4.txt自体はつくられますが、中にはなにも書き込まれません。
余分と判断した部分は削除しているため、入力ファイル内の値はここでは何も使われていません。
該当のソースコード
Perl
1my $infile=$ARGV[0]; 2my $start_no=$ARGV[1]; 3 4open (my $infh,'<',$infile); 5 6my $i=0; 7my $j; 8for ($j=1;$j<5;$j++){ 9 my $outfile1="tmp1.txt"; 10 my $outfile2="tmp2.txt"; 11 my $outfile3="tmp3.txt"; 12 my $outfile4="tmp4.txt"; 13 14 open (my $outfl1,'>',$outfile1); 15 open (my $outfl2,'>',$outfile2); 16 open (my $outfl3,'>',$outfile3); 17 open (my $outfl4,'>',$outfile4); 18 while ( my $line= <$infh>) { 19 $i++; 20 if ($i == 1){ 21 next;#skip label 22 } 23 24 my $line_no1=2*($start_no-2)+2; 25 my $line_no2=$line_no1+1; 26 if($j==1){ 27 print $outfl1 "$line_no1 \n"; 28 print $outfl1 "$line_no2 \n"; 29 } 30 elsif($j==2){ 31 print $outfl2 "$line_no1 \n"; 32 print $outfl2 " $line_no2 \n"; 33 } 34 elsif($j==3){ 35 print $outfl3 "$line_no1 \n"; 36 print $outfl3 "$line_no2 \n"; 37 } 38 else{ 39 print $outfl4 "$line_no1 \n"; 40 print $outfl4 " $line_no2 \n"; 41 } 42 $start_no++; 43 } 44 close ($outfl1); 45 close ($outfl2); 46 close ($outfl3); 47 close ($outfl4); 48} 49close ($infh);
試したこと
出力ファイルに書き込む前に print $outfl1; とすると、GLOB(0x2208c38) と表示されます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/22 01:52
2020/05/22 03:55
2020/05/22 03:58
2020/05/22 04:18
2020/05/22 04:53
2020/05/22 05:45
2020/05/22 06:11
2020/05/22 06:16