in reply to Split results of Map function

Are you sure you really want a hash?

If you use the first two numbers digits as keys to a hash, then you will wind up with duplicate keys, and some of your data will be lost.

Of course this may be what you want. But if not, perhaps what you really want is a LoL

Update 1: the following code shows you the difference between putting your data into a hash, or a LoL (List of Lists)..

Update 2: actually, that's not a LoL at all - it's just a straight list. If we change the @LOL assignment to read:

push @LoL, [$key, $value];
then we get a LoL :)
I confused myself because I initially thought you wanted to separate all the words on each line. But anyway, I'm sure you get the idea :)
#!/usr/bin/perl -wl use strict; use Data::Dumper::Simple; my %hash; my @LoL; while (<DATA>) { chomp; my ($key, undef, $value) = split /\s+/, $_, 3; $hash{$key} = $value; push @LoL, $key, $value; } print Dumper(%hash); print Dumper(@LoL); __DATA__ 73 63, galileo measur us newton basi law motion 75 45, galileo experi bodi roll slope act same forc weight effect +make constantli speed up 70 50, show real effect forc chang speed bodi set move previous th +ought 75 50, meant bodi act forc keep move straight line same speed 65 45, idea first state explicitli newton principia mathematica pu +blish 1687 known newton first law 75 50, happen bodi forc act given newton second law
Output:
%hash = ( '70' => 'show real effect forc chang speed bodi set move pre +vious thought', '75' => 'happen bodi forc act given newton second law', '73' => 'galileo measur us newton basi law motion', '65' => 'idea first state explicitli newton principia mathem +atica publish 1687 known newton first law' ); @LoL = ( '73', 'galileo measur us newton basi law motion', '75', 'galileo experi bodi roll slope act same forc weight effect m +ake constantli speed up', '70', 'show real effect forc chang speed bodi set move previous tho +ught', '75', 'meant bodi act forc keep move straight line same speed', '65', 'idea first state explicitli newton principia mathematica pub +lish 1687 known newton first law', '75', 'happen bodi forc act given newton second law' );

Cheers,
Darren :)

Replies are listed 'Best First'.
Re^2: Split results of Map function
by Gavin (Archbishop) on Apr 08, 2006 at 18:40 UTC
    Hi All
    Thanks all for the input.
    I had not appreciated that there could be multiple keys with the same value.
    I need to be able to keep all duplicate numbers in the hash. Is there a way of switching the data between key / value as the text is actually unique and would be ideal as the key.
    RegardGavin
      That's simple: just say $hash{$v} = $k instead of $hash{$k} = $v :)