0

私はの素敵な形を探しています

if (! write_to_file($data) )
{
    open_this_file($file_name)
    write_to_file($data) or die "Cant write to $file_name" ;
}

とても不明瞭に見えますね。自明の書き方は?

4

4 に答える 4

7

or修正してor死ぬ!」

write_to_file( $data )失敗時に false を返すと仮定します。

   write_to_file( $data )
or do { open_this_file( $file_name ); write_to_file( $data ) }
or die "Can't write to $file_name";

do演算子の優先順位のおかげで、ブロックなしで書き直すこともできます。open_this_fileとの間のコンマはwrite_to_fileよりも優先順位が高いため、効果はブロックorと同じです。do

   write_to_file( $data )
or open_this_file( $file_name ), write_to_file( $data )
or die "Can't write to $file_name";
于 2012-09-26T12:10:02.727 に答える
4
for my $try (1..$num_tries) {
    last if write_to_file($data);
    die '...' if $try == $num_tries;
    open_this_file($file_name)
}
于 2012-09-26T12:28:26.640 に答える
3
open_this_file($file_name) if not write_to_file($data);
write_to_file($data) or die "Cant write to $file_name";

大した違いはありませんが、あなたが望むようにきれいです..

または、このワンライナーを使用できます: -

write_to_file($data) or open_this_file($file_name) and 
                        write_to_file($data) or die "Cant write to $file_name";
于 2012-09-26T12:12:20.167 に答える
2
sub is_open { return (tell($handle) != -1); }

open_this_file($file_name) if not is_open($handle);
write_to_file($data)       or die "Cant write to $file_name" ;

$handleファイルハンドルはどこにありますか。

于 2012-09-26T12:11:21.390 に答える