読者です 読者をやめる 読者になる 読者になる

weblog of key_amb

主にIT関連の技術メモ

Perl で非ループなブロックで last を使う

if

if ブロックを途中で抜けたいときにたまに使うことがありました。

if {{
    # do something
    last if $error;
    # do something
}}

{{ にしているのがミソで、if {} の内側の {} がブロックということです。

eval

evallast で抜けられないのですが、同様のことができます。

eval {{
    # do something
    last if $complete;
    # do something
}};
if ($@) {
    die $@;
}

(追記) return の方がシンプルなので、return でよさそうです。

eval {
    # do something
    return if $complete;
    # do something
};
if ($@) {
    die $@;
}

参考