in reply to Pattern matching with hash keys

Your syntax is invalid. Instead of = between the key and the value, you need the "fat comma" => as shown below. Does this do what you want?

use strict; use warnings; my %hash = ( "rabbit" => "pap", "triangle" => "tri" ); my $key = "rabbit"; print $hash{$key}; # prints "pap"

Replies are listed 'Best First'.
Re^2: Pattern matching with hash keys
by tej (Scribe) on Oct 04, 2010 at 06:24 UTC

    All rite i will change the syntax as it is wrong, However, What i want is to match key value with input string.

    Like If $str contains "Rabbit" or "rabbit" i want it to be replaced with "pap". I am tring to use hash as there are n number values that i want to match and replace

      If $str contains "Rabbit" or "rabbit" i want it to be replaced with "pap".
      Hashes, by default, are case sensitive. However, if you take care to create the hash with all lower case keys, you could then simply lower case each input string, for example:
      use strict; use warnings; my %hash = ( "rabbit" => "pap", "triangle" => "tri" ); my $key = "rabbit"; print $hash{ lc($key) }, "\n"; # prints "pap" $key = "Rabbit"; print $hash{ lc($key) }, "\n"; # also prints "pap"

      You can do that with regex with 'i' option modifier which stands for ignore case. Refer perlre. For example,

      $str =~ /rabbit/i
      But TIMTOWTDI, you can do that with functions also.

      Prasad