I humbly seek wisdom in the form of a better idiom(s). I am regularly find myself needing to review ordered list. I'm not so interested in the nodes but gap from one list item to the next. I have heard this referred to as the fence vs. posts problem. I seek an idiom for
@ = "A", "B", "C"; my @gaps = mesh @l, @l; pop @gaps; shift @gaps;
producing the even numbered list "A","B" ,"B","C"?
Then I work with these using the pairs function from List::Util and List::MoreUtils
In code form:
use strict; use warnings; use feature 'say'; use List::MoreUtils 'mesh'; use List::Util 'pairs', 'pairfirst', 'pairgrep', 'pairmap'; my @trip = ("Chicago", "Saint Looey", "Joplin", "OKC", "Amarillo", " +Gallup", "Flagstaff", "Winona", "Kingman", "Barstow", "San Bernandi +no", "LA" ) ; # I seek, not info on the cities, but info on the # differences in going from one city to city. my @legs = mesh @trip, @trip; pop @legs; shift @legs; # I seek an idiom for the above three lines. map { printf "%15s to %-15s\n", $_->[0],$_->[1] } pairs @legs; # Further # I might have city info as such: # $info{Joplin}{state}=>"MO" # map { if ($info{$_->[0]}{state} ne $info{$_->[1]}{state}) {say "Man +n Act!"} } pairs @legs; # given the above @cities array how might I produce # $info{Joplin}{state}=>"MO" # my @states = ("IL", "MO", "MO", "OK", "TX", "TX", "AZ", "AZ", "AZ", "CA", "CA", "CA" ) ; my %info; # the following does not work!!! map { $info{$_[0]}{"state"}=$_[1] } pairs mesh @trip, @states; say "print the hash:"; say join " ", %info;
Thank you
In reply to Fence vs. Posts by rodinski
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |