Perl - Hash and the => operator -


so im learning perl , got chapter hashes. understand '=>' operator alias comma operator. when try make value undef warning

use of uninitialized value $last_name{"dino"} in concatenation (.) or string @ ./learning.pl line 18.

use warnings; use strict;  %last_name = (     fred   => 'flintston',     dino   =>  undef,     barney => 'rubble',     betty  => 'rubble', );  $key; $value;  if(%last_name) {     foreach $key (sort keys %last_name) {         print("$key => $last_name{$key}\n");     } } 

but when change hash line to:

my %last_name = (     fred   => 'flintston',     dino   =>  undef =>     barney => 'rubble',     betty  => 'rubble', ); 

it works fine , returns value undef. did replace comma operator separating key/value '=>' operator.

why later work not former if 2 operators supposed same?

they not same. "fat comma" 1 more thing: quotes left hand side operand when it's bareword. therefore,

undef, 1 

is equivalent to

undef(), 1 

while

undef => 1 

is equivalent

'undef', 1 

see perlop:

the => operator synonym comma except causes word on left interpreted string if begins letter or underscore , composed of letters, digits , underscores.


Comments

Popular posts from this blog

PHP DOM loadHTML() method unusual warning -

python - How to create jsonb index using GIN on SQLAlchemy? -

c# - TransactionScope not rolling back although no complete() is called -