LoginSignup
1
0

More than 5 years have passed since last update.

perl な variable check and print

Last updated at Posted at 2012-05-07

SYNOPSIS

変数の存在チェックと出力を 1line で行う書き方.
丁寧な?書き方と比較して書きました.

CODE

下のコードと同様のを Gist にも置いておきます.
variable_check.pl

variable_check.pl
#!/usr/bin/env perl
use strict;
use warnings;

# こんな変数がありましたとさ
my $data = { param => "foo\n" };

for (0..1) {
    # 丁寧に?書くとこうなる
#   if ($data->{param}) {
    if (defined($data->{param})) {
        print $data->{param};
    } else {
        print '$data->{param}' . " is nothing.\n";
    }

    $data->{param} = undef;
}

$data->{param} = "baz\n";
for (0..1) {
    # 1 line な感じで書くとこうなる
#   if ($_ = $data->{param}) {} else { $_ = '$data->{param}' . " is nothing.\n"; } print;
    if (defined($_ = $data->{param})) {} else { $_ = '$data->{param}' . " is nothing.\n"; } print;

    $data->{param} = undef;
}

$data->{param} = "bar\n";
for (0..1) {
    # さらに, 存在しない時に出力しなくていいならば
#   print if $_ = $data->{param};
    print if defined($_ = $data->{param});

    $data->{param} = undef;
}

EDIT:

$data->{param} = 0;
$data->{param} = '';
の時に, 挙動が想定してるのと違うことになるので修正しました.
上記の条件の時に, nothing の方に入りたい場合は, defined を外してあるコメントアウトのような書き方でOK.

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0