PERL:分割和读取/访问一行中的元素

时间:2013-08-22 03:21:18

标签: arrays perl split

我正在尝试构建一个脚本来读取文件中的行,通过选项卡分隔符SPLIT它们(最终添加两列等)但是在SPLIT命令之后for(...似乎没有读取数组@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从文件中获取行。我得到的警告是熟悉的“在连接(。)中的@netcolumns中使用未初始化的值或在bin_data_4.pl第26行,第1行(#1)(未初始化的W)中使用字符串”

数据文件如下所示:

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 3868

我似乎无法在第30行找到错误,但我认为这是一个明显的错误。感谢您提供的任何帮助。

0 个答案:

没有答案