ファイル内の行を読み取るスクリプトを作成し、タブ区切りでそれらを分割し、(最終的には2つの列を追加するなど)しかし、SPLITコマンドの後、 for (.. は値をarray @netcolumns. 出力ファイルには行 (SPLIT の前) があり、次に TAB の行があります..しかし空です。
#!/usr/bin/perl
#
use strict;
use warnings;
use diagnostics;
# input and output files
my $file = "testfile4.txt"; # tab seperated data
my $binout = $file . ".binned.txt";
# open filehandles
open IN, "<$file" or die "cannot open $file: $!\n";
open BOUT, ">$binout" or die "cannot open $binout: $!\n";
# some other variables
my @netcolumns=(); # declare this
# the first line
my $firstLine = <IN>;
print ("$firstLine \n");
print BOUT ("$firstLine \n");
my $netcolumns = split /\t/, $firstLine; # tab seperated data
for (my $j = 0; $j < 7; $j ++) { # print the 7 column headers from the first line of $input
print BOUT "$netcolumns[$j]\t";
}
print BOUT "\n";
print ("$netcolumns[0] \n");
close IN;
close BOUT;
画面出力にはファイルの最初の行が表示されるため、$firstLine はファイルから行を取得します。私が得る警告は、おなじみの「bin_data_4.pl 26 行目、1 行目 (#1) (W uninitialized) の連結 (.) または文字列内の @netcolumns 内の初期化されていない値の使用」です。
データファイルは次のようになります。
frame.time_epoch frame.number frame.len ip.src sctp.srcport ip.dst sctp.dstport 1376065574.000054 1 1514 172.17.78.26 38733 172.16.189.180 3868
1376065574.000054 2 178 172.17.78.26 38733 172.16.189.180 3868
1376065574.000095 3 62 172.16.189.180 3868 172.17.78.26 38733
1376065574.000499 4 410 172.17.78.26 38733 172.16.189.180 3868
1376065574.000536 5 62 172.16.189.180 3868 172.17.78.26 38733
1376065574.000754 6 410 172.17.78.26 38733 172.16.189.180 3868
1376065574.001108 7 410 172.17.78.26 38733 172.16.189.180 3868
1376065574.001149 8 62 172.16.189.180 3868 172.17.78.26 38733
1376065574.001251 9 1514 172.17.78.26 38733 172.16.189.180 3868
1376065574.001251 10 178 172.17.78.26 38733 172.16.189.180 386
30行目にエラーが見つからないようですが、明らかなエラーだと思います。ご協力いただきありがとうございます。