hangon has asked for the wisdom of the Perl Monks concerning the following question:
Hi Monks,
I'm trying to interpolate a string of substrings to load into an array, and wanted to do it in 1 or 2 lines without loading a module. It seems like there should be a better way to DWIM. Here's what I have. Thanks for any ideas.
# the substrings might be single or double qouted my $string = q("one","two","three"); # the obvious variations on direct assignment don't work: my @arr1 = ("$string"); my @arr2 = "$string"; my @arr3 = {"$string"}; # etc # these work, but: # I don't want to use string eval my @array = eval $string; # and this kind of stuff just gets ugly $string =~ s/^[\'\"]//; $string =~ s/[\'\"]$//; my @array2 = split(/[\'\"],[\'\"]/, $string); # is there a better way? use Data::Dumper; print "\nThis is what I'm looking for:\n"; print Dumper \@array; print "\nNot This: \n"; print Dumper \@arr1;
UPDATE: Thanks for the help everyone. I was finally able to set aside my obsessive compulsion about this and finish the rest of my code. The CSV spec I'm dealing with is well defined, so I'll tinker with some of the regex ideas a bit, but may end up looking for a lightweight CSV parser on CPAN.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Interpolating a string into list context.
by grinder (Bishop) on Nov 13, 2007 at 08:52 UTC | |
|
Re: Interpolating a string into list context.
by GrandFather (Saint) on Nov 13, 2007 at 06:58 UTC | |
|
Re: Interpolating a string into list context.
by Somni (Friar) on Nov 13, 2007 at 07:02 UTC | |
|
Re: Interpolating a string into list context.
by stark (Pilgrim) on Nov 13, 2007 at 08:39 UTC | |
|
Re: Interpolating a string into list context.
by johngg (Canon) on Nov 13, 2007 at 10:22 UTC | |
|
Re: Interpolating a string into list context.
by jbert (Priest) on Nov 13, 2007 at 11:25 UTC | |
by hangon (Deacon) on Nov 14, 2007 at 03:53 UTC | |
by jbert (Priest) on Nov 14, 2007 at 09:33 UTC | |
|
Re: Interpolating a string into list context.
by chrism01 (Friar) on Nov 13, 2007 at 23:27 UTC |