[Chicago-talk] Perl 101 question

Pete Krawczyk mongers at bsod.net
Tue Feb 13 17:00:54 PST 2007

Subject: [Chicago-talk] Perl 101 question
From: Andy_Bach at wiwb.uscourts.gov
Date: Tue, 13 Feb 2007 15:44:53 -0600

}So are the parens just to 'bind' the index to the bare list?

 $ perl -MO=Deparse -e 'print "how"'
 print 'how';
 -e syntax OK
Consider what happens if we add parens:
 $ perl -MO=Deparse -e 'print ("how")'
 print "how";
 -e syntax OK
The parens are bound to the print() function, not to a list containing the
single element "how".  That, incidentally, is why you can't tack the [0]  
onto the end - you can't treat a function as a direct arrayref.
 $ perl -MO=Deparse -e "print (('how', 'price', 'hat') [0]);"
 print(('how', 'price', 'hat')[0]);
 -e syntax OK
Taking the index off your print gives:
 $ perl -MO=Deparse -e "print (('how', 'price', 'hat'));"
 print 'how', 'price', 'hat';
 -e syntax OK
So, as you can see, the first set is used by the function, and the second 
set creates a list, of which the first element is selected.
-Pete K
Pete Krawczyk
    Chicago Perl Mongers
    mongers at bsod dot net

More information about the Chicago-talk mailing list