Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: Getting values from a Hash from user input

by Kenosis (Priest)
on Nov 21, 2013 at 21:10 UTC ( #1063809=note: print w/ replies, xml ) Need Help??


in reply to Getting values from a Hash from user input

Another way is to use Perl's defined-or operator (//):

use strict; use warnings; my %words = ( 'hello' => 'world' ); print 'type a word: '; chomp( my $inData = <> ); print $words{$inData} // "Key '$inData' doesn't exist.\n";

If the key's defined, it's associated value will be printed, otherwise the 'default' string will be printed.

Hope this helps!

Edit: //= -> //. Thank you, Eily.


Comment on Re: Getting values from a Hash from user input
Select or Download Code
Re^2: Getting values from a Hash from user input
by Eily (Chaplain) on Nov 21, 2013 at 21:33 UTC

    The defined-or operator is just //. $lvalue //= "value"; actually means $lvalue = "value" unless defined $lvalue;. This means that you actually write "Key '$inData' doesn't exist.\n" in the hash :

    use Data::Dumper; my %words = ( 'hello' => 'world' ); print 'type a word: '; chomp( my $inData = <> ); print $words{$inData} //= "Key '$inData' doesn't exist.\n"; print Dumper \%words;
    type a word: Bonjour Key 'Bonjour' doesn't exist. $VAR1 = { 'hello' => 'world', 'Bonjour' => 'Key \'Bonjour\' doesn\'t exist. ' };
    You meant print $words{$inData} // "Key '$inData' doesn't exist.\n"; which works fine as long as undef isn't a valid value.

      Thanks for this catch! Corrected...

        Thanks for help guys

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1063809]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (8)
As of 2014-10-25 13:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (143 votes), past polls