私はの素敵な形を探しています
if (! write_to_file($data) )
{
open_this_file($file_name)
write_to_file($data) or die "Cant write to $file_name" ;
}
とても不明瞭に見えますね。自明の書き方は?
私はの素敵な形を探しています
if (! write_to_file($data) )
{
open_this_file($file_name)
write_to_file($data) or die "Cant write to $file_name" ;
}
とても不明瞭に見えますね。自明の書き方は?
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";
for my $try (1..$num_tries) {
last if write_to_file($data);
die '...' if $try == $num_tries;
open_this_file($file_name)
}
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";
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
ファイルハンドルはどこにありますか。