#!perl
use strict;
use warnings;
# open a file for reading in the current directory
open(FILEHANDLE,"< input_file.txt") or die $!;
open(OUTFILE,"+> outfile_file.txt") or die $!;
my $record_count = 0;
while (<FILEHANDLE>){
my @data = split /\s+/;
my $first = shift @data;
$record_count++;
for (my $i = 0; $i < @data; $i+=2) {
print OUTFILE "$record_count\t$first\t", $i/2+1, "\t$data[$i]
+", $data[$i+1], "\n";
}
}
May be I've missed some details, but the way is correct
As for me, I prefer -n flag in such cases:
#!perl -lwn
my @data = split /\s+/;
my $first = shift @data;
for (my $i = 0; $i < @data; $i+=2) {
print join "\t", $., $first, $i/2+1, $data[$i], $data[$i+1];
}
usage:
this_script.pl input_file.txt >> output_file.txt
|