I'm now trying to change it so it handles the 4 updates in my original post. I see it already handles update #1 re the '*'. How does it do that, given that you're using glob?
Below is your code as a full script with my attempted changes to make it process all the data, and to handle updates #3 & #4 commented out because they don't work. Any suggestions on how to get them working? And how to best fit update #2 in to your code?
And how is '' => '}' replacing the line ending? I know \z matches the end, but those empty 'quotes' puzzle me.
#!/usr/bin/perl use strict; use warnings; my %globize = ('=' => '={', ':' => '}:{', '' => '}'); #my %globize = ('?What here?' => '{', ':' => '}:{', '' => '}'); my (@globs, %hash); while (<DATA>) { my ($globule, $value) = split / /; chomp $value; $globule =~ s{ ([=:] | \z) }{$globize{$1}}xmsg; #$globule =~ s{ (\A | : | \z) }{$globize{$1}}xmsg; print qq{'$globule'}."\n"; @globs = glob $globule; $hash{$_} = $value for @globs; } use Data::Dump; dd \%hash; __DATA__ Prefix1:A,B:c,d value1=10 Prefix2:A:b,c:1,2 value2=20 Prefix3:A:*:1,2 value3=30 Prefix4:A:*:1,2 value4a=10|value4b=20 Prefix5,Prefix6:A:*:1,7 value5=10
In reply to Re^3: Combinations of lists, etc
by tel2
in thread Combinations of lists to a hash
by tel2
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |