En r�ponse � Stephen Turner <[EMAIL PROTECTED]>:
> On Wed, 30 Jan 2002 [EMAIL PROTECTED] wrote:
> >
> > Bingo! The only thing left was to figure out how to convert that
> > into a string for eval. I could see no better way than the
> > standard @{[]} notation
>
> Would someone be kind enough to get me up to speed on @{[]} ?
"@a" turns the array @a in a string, where each elements of @a are
separated by $".
This is more or less equivalent to join$",@a
[ ] returns an array reference.
So when you write "@{[1..3]}", you dereference an array reference, and turn it
into a string, with elements join()ed by $".
"@{[1..3]}" eq "1 2 3"; # $" equals ' ' by default
A possibly shorter way to join() array elements :
$a=join a,@a
vs.
$"=a;$a="@a"
And it can actually be shorter, sometimes:
print join a,@a
vs.
$"=a;print"@a"
It may not be shorter every single time, but you get to learn yet another
special variable. :-)
Another nice thing about this use of glob, is that you can use it to get
all permutations of something in a very short manner :
$"=",";
@a=1..3; @b=4..6;
print join' ',glob("{@a}{@b}");
Result:
14 15 16 24 25 26 34 35 36
All of this without a single loop construct! :-)
--
Philippe BRUHAT - BooK
When you run from your problem, you make it that much harder for good
fortune to catch you, as well. (Moral from Groo The Wanderer #14 (Epic))