ゆるゆる〜tech ver〜

勉強したこととかかく

Perlのdefindeとexists

definde はkeyがあってもundefならfalseになる。

exists はkeyがあればtrueになる。

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;

my $result;
$result->{test1} = 'undefind...';
$result->{test2} = '';
$result->{test3} = undef;

#defined
{   
    if ( defined $result->{test1} ) { 
        print 'defined test1 is ok' . "\n";
    }
    if ( defined $result->{test2} ) { 
        print 'defined test2 is ok' . "\n";
    }
    if ( defined $result->{test3} ) { 
        print 'defined test3 is ok' . "\n";
    }
    if ( defined $result->{test4} ) { 
        print 'defined test4 is ok' . "\n";
    }
    
    ### output ###
    ##defined test1 is ok'
    ##defined test2 is ok'
}

#exists
{
    if ( exists $result->{test1} ) { 
        print 'exists test1 is ok' . "\n";
    }   
    if ( exists $result->{test2} ) { 
        print 'exists test2 is ok' . "\n";
    }   
    if ( exists $result->{test3} ) {
        print 'exists test3 is ok' . "\n";
    }
    if ( exists $result->{test4} ) {
        print 'exists test4 is ok' . "\n";
    }

    ### output ###
    ##exists test1 is ok'
    ##exists test2 is ok'
    ##exists test3 is ok'
}