Saturday, December 25, 2010

Uninitialized value in Perl

#!/usr/bin/perl
#Use of uninitialized value

use strict;
use warnings;

my $str;    # undifined string
my %hash; # undifined hash

# Use of uninitialized value in pattern match
# Use of uninitialized value in substitution
$str =~ /a/;
$str =~ s/a/b/g;

my $foo = 'hello';
$foo =~ s/hell/$str/;


# Use of uninitialized value in string eq
# (numeric eq, ==, lt, gt, ...)
if ($str eq 'a') {}
if ($str == 1) {}


# Use of uninitialized value in list assignment
my %a = ( $str => 1 );


# Use of uninitialized value in hash element
my $a = $hash{$str};

# Use of uninitialized value in concatenation
# Use of uninitialized value in sprintf
$a = "hello, " . $str;
$a = sprintf("hello, %s", $str);

# Use of uninitialized value in split
# Use of uninitialized value in join
my @a = split '-', $str;
      $a =join '-', ($str);

# empty hash key
my %id_name_table = (
    1 => 'foo',
    2 => 'bar',
    3 => 'buzz',
);
my $b = 'my name is ' . $id_name_table{4};



__END__
output Error


Use of uninitialized value in pattern match (m//) at test.pl line 11.
Use of uninitialized value in substitution (s///) at test.pl line 13.
Use of uninitialized value in substitution (s///) at test.pl line 16.
Use of uninitialized value in string eq at test.pl line 21.
Use of uninitialized value in numeric eq (==) at test.pl line 22.
Use of uninitialized value in list assignment at test.pl line 26.
Use of uninitialized value in hash element at test.pl line 30.
Use of uninitialized value in concatenation (.) or string at test.pl line 34.
Use of uninitialized value in sprintf at test.pl line 35.
Use of uninitialized value in split at test.pl line 39.
Use of uninitialized value in join or string at test.pl line 40.
Use of uninitialized value in concatenation (.) or string at test.pl line 48.

No comments: