I threw the if( $hash{$vars[2]} ) in there in case you don't really know if the 3rd element is uniq throughout.#!/usr/bin/perl use strict; my %hash; open (DATA, "<.txt") or die "Can't open file $!\n"; my @DATA = <DATA>; close (DATA); foreach my $rec (@DATA) { chomp $rec; my @vars = split(/,/,$rec); if ($vars[0]) { # you can use map to use the regex # on each element of the array map $_ =~ s/^\s+$//g, @vars; print "$vars[0] $vars[1] $vars[2] $vars[3]\n"; if( $hash{$vars[2]} ) { warn "key '$vars[2]' already exists in hash\n"; } else { $hash{$vars[2]} = join(' ', @vars[0,1,3]); # or whatever you wanted } # your hash to be built as } }
I'm assuming that with the s/^\s+$//g your intent is to to truncate all records that are all spaces. Is this correct?
- FrankG
In reply to Re: Hash Variable
by how do i know if the string is regular expression
in thread Hash Variable
by qball
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |