use strict; use warnings; my $inputFile = <>; open my $inputFH, q{<}, $inputFile or die qq{open: < $inputFile: $!\n};
This produces
$ cat spw718152.dat SNPSTER2_50_3_1_119_588 10 SNPSTER2_50_3_1_121_522 16 SNPSTER2_50_3_1_119_260 27 $ ./spw718152 spw718152.dat Unsuccessful open on filename containing newline at ./spw718152 line 8 +, <> line 1. open: < spw718152.dat : No such file or directory $
Adding the chomp will allow the file to open. Using map and taking advantage of the default behaviour of split, which is to operate on $_ splitting on whitespace (including newlines) and discarding empty trailing fields, gives us this.
use strict; use warnings; use Data::Dumper; chomp( my $inputFile = <> ); open my $inputFH, q{<}, $inputFile or die qq{open: < $inputFile: $!\n}; my %dataItems = map { split } <$inputFH>; close $inputFH or die qq{close: < $inputFile: $!\n}; print Data::Dumper->Dumpxs( [ \ %dataItems ], [ q{*dataItems} ] );
Which produces.
$ ./spw718152 spw718152.dat %dataItems = ( 'SNPSTER2_50_3_1_121_522' => '16', 'SNPSTER2_50_3_1_119_588' => '10', 'SNPSTER2_50_3_1_119_260' => '27' ); $
I hope this is of interest.
Cheers,
JohnGG
In reply to Re: Creating hash Array
by johngg
in thread Creating hash Array
by ashnator
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |