PERL key pair using cells of a csv file -
that created col0 , col3 of csv file, sum of + 1 col3 key value. next want change col0 cells hash key associated col3 value. how do that? in essence if value of col3 changes col0 should updated keypair.
use strict; use warnings; @arrayfruit; %fruits = (); foreach (<data>) { chomp; $line = $_; @elements = split( ",", $line ); $fruit = $elements[0]; $color = $elements[1]; $type = $elements[2]; $nmbr = $elements[3]; %fruits = ( $fruit => $nmbr ); $new_nmbr = $nmbr + 1; print "key number = $nmbr <---> value fruit = $fruit \n" foreach ( keys %fruits ); push @arrayfruit, "$fruit, $color ,$type ,$new_nmbr \n"; } __data__ apple,green,fruit,1 turnip,white,veg,2 plum,red,fruit,3 apple,green,fruit,1 plum,red,fruit,3 orange,orange,fruit,4 spud,brown,veg,5 plum,red,fruit,3 orange,green,fruit,4 plum,red,fruit,3 orange,orange,fruit,4 spud,brown,veg,5 plum,red,fruit,3 orange,orange,fruit,4 expected data turnip,green,fruit,2 plum,white,veg,3 orange,red,fruit,4 apple,green,fruit,2 orange,red,fruit,4 spud,orange,fruit,5 blank,brown,veg,6 orange,red,fruit,4 spud,green,fruit,5 orange,red,fruit,4 spud,orange,fruit,5 blank,brown,veg,6 orange,red,fruit,4 orange,orange,fruit,5
this appears you're asking for. hash isn't appropriate relating integers strings — want array that. didn't explain should happen when new number doesn't correspond of original values, i've used blank own code does
use strict; use warnings 'all'; @fruits; chomp(my @data = <data>); ( @data ) { @fields = split /,/; ($fruit, $n) = @fields[0,3]; $fruits[$n] = $fruit; } ( @data ) { @fields = split /,/; $fields[0] = $fruits[++$fields[3]] // 'blank'; print join(',', @fields), "\n"; } __data__ apple,green,fruit,1 turnip,white,veg,2 plum,red,fruit,3 apple,green,fruit,1 plum,red,fruit,3 orange,orange,fruit,4 spud,brown,veg,5 plum,red,fruit,3 orange,green,fruit,4 plum,red,fruit,3 orange,orange,fruit,4 spud,brown,veg,5 plum,red,fruit,3 orange,orange,fruit,4 output
turnip,green,fruit,2 plum,white,veg,3 orange,red,fruit,4 turnip,green,fruit,2 orange,red,fruit,4 spud,orange,fruit,5 blank,brown,veg,6 orange,red,fruit,4 spud,green,fruit,5 orange,red,fruit,4 spud,orange,fruit,5 blank,brown,veg,6 orange,red,fruit,4 spud,orange,fruit,5
Comments
Post a Comment