Advertisement
mpettis

ModernPerlQuestion

Apr 18th, 2014
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.48 KB | None | 0 0
  1. #!/usr/bin/env perl
  2. use v5.12;
  3. #use Test::More;
  4. #use Modern::Perl;
  5. use Modern::Perl 2011;
  6. use autodie;
  7. use Data::Dumper;
  8.  
  9. ## Example from here:
  10. # http://modernperlbooks.com/books/modern_perl_2014/03-perl-language.html#TmVzdGVkRGF0YVN0cnVjdHVyZXM
  11. ## Perl Version
  12. # $ perl -v
  13. # This is perl 5, version 12, subversion 4 (v5.12.4) built for darwin-thread-multi-2level
  14. # (with 2 registered patches, see perl -V for more detail)
  15.  
  16.  
  17.     ## Code snippet below did not work, got undefined values.
  18.     ## Had to first declare 'entree' with my in one statement, then assign to it.
  19.     ## Question: Wondering why this has to be so, and why the book version does not work, as
  20.     ## it seems that it should.
  21. my %meals = (
  22.     breakfast => { entree => 'eggs',
  23.                    side   => 'hash browns' },
  24.     lunch     => { entree => 'panini',
  25.                    side   => 'apple'},
  26.     dinner    => { entree => 'steak',
  27.                     side   => 'avocado salad' },
  28. );
  29.  
  30.  
  31. ## Work on structure
  32.  
  33.  
  34.     ## From the book:
  35. my ($entree, $side) = @{ $_ }{qw(entree side)} for $meals{breakfast};
  36. defined $entree ? say "book version entree defined." : say "book version entree NOT defined.";
  37. ## Output:
  38. #book version entree NOT defined.
  39.  
  40.  
  41.     ## How I made work
  42. my ($entree2, $side2);
  43. ($entree2, $side2) = @{ $_ }{qw(entree side)} for $meals{breakfast};
  44. defined $entree2 ? say "predeclare entree2 defined." : say "predelcare entree2 NOT defined.";
  45. ## Output:
  46. #predeclare entree2 defined.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement