in reply to Problem with hash slice.
Hello MrSparks,
To make a hash slice, you need to use the braces (curly brackets) that normally go with hashes, not parentheses:
#! perl use strict; use warnings; use diagnostics; my %nationality_of = ( 'Ovid' => 'Greek', 'John Davidson' => 'Scottish', 'Tennyson' => 'English', 'Poe' => 'Tracky', # Geek? ); my @nationalities = @nationality_of{ 'Ovid', 'Tennyson' }; # <-- Ch +ange parentheses to braces here! print "@nationalities";
Output:
16:03 >perl 1162_SoPW.pl Greek English 16:03 >
@nationalities is in double quotes to force the behaviour provided by double-quote interpolation. See, for example, the entry for the $LIST_SEPARATOR variable (usually spelled $") in perlvar.1
P.S. Please don’t include line numbers when posting code.2
Updates:
1 With $" set to a space (the default), print "@nationalities"; is equivalent to print join(' ', @nationalities);.
2 This makes it harder for monks to copy-and-paste the code and run it. If you want to see line numbers on code displayed in PerlMonks, add &001;: to the “Code Prefix” box in the “Code Listing Settings” section of your Display Settings.
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
|
|---|