At 9:26 PM -0700 1/7/11, Chris Stinemetz wrote:
Thanks Brandon,
Ultimately I am trying to take the value from the input data in
index position "31" and assign one of the three keys to it. For
example if index 31 has the value 801 it should be assigned "ICT"
when I run the program. I hope I explained it better. Thank you for
your help!
What should be done with the value "ICT"? Do you want to write a new
version of the file?
On Fri, Jan 7, 2011 at 10:51 PM, Chris Stinemetz
<cstinem...@cricketcommunications.com> wrote:
#!/usr/bin/perl
use warnings;
use strict;
my $data = (<>);
#Market configurations has for cells
my %marketInfo = (
"STL" => { "start" => 300,
"end" => 599, },
"MCI" => { "start" => 1,
"end" => 299, },
"ICT" => { "start" => 800,
"end" => 850, },
);
%marketInfo = split /;/, $data;
Do not do this! You have just overwritten and destroyed your market
information.
>
for (keys %marketInfo) {
print "$marketInfo{$_}\n";
}
Presuming that you do not destroy the information in %marketinfo, why
do you want to print it? Are you trying to replace part of the
%marketinfo hash with data from the file? Are you trying to replace
data in the file with data from the %marketinfo hash?
>
Below is a few lines of the data I am working with from text file:
PACE | EVDOPCMD | 33.0 | 101218 | 07 |
8;1023240136;1218;0;1;00a000001a2bcdc7;0310003147702376;ac016d4a;;;5.6.128.8;0;;;;;43234169;43234349;;;10000;1;1;;0;;19;5.6.128.22;172.30.151.5;304;3;304;3;;;;;15;175;15;175;15;175;1;1798;1251;0;0;2;19;20;;;;;1;1;1;0;128;5.6.128.8;;;;;;;301;5.6.128.8;;;8;304;3;;;;1;43244037;;;1;18;43234169;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1;;;;;;43234416;0;0;304;3;21;19;175;15;405;1;1;1;1;0;125;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|
>
8;1023240137;1218;0;1;00a000001db74ace;;ac0174ca;43243423;1678442111;5.6.128.8;1;0;;43242544;43244207;43243423;43243647;;;1000;1;1;;0;;19;5.6.128.26;;372;2;372;2;;43243012;0;43243562;15;175;15;175;15;175;1;;;;;5;48;19;20;49;50;;0;1;2;0;68;5.6.128.8;;;;;;;301;5.6.128.8;;;8;372;2;;;;1;43244207;;;1;18;43243423;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1;;;
You might use a loop something like this (untested):
while( my $line = <> ) {
next if $line =~ /^PACE/;
chomp($line);
my @data = split(';',$line);
my $entry = $data[30]; # or 31 if you are using zero-based indexing
for my $key ( keys %marketinfo ) {
if( $entry >= $marketinfo{$key}->{start} &&
$entry <= $marketinfo{$key}->{end}
) {
$entry = $key;
last;
}
}
# do something with $entry
}
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/