做危险的事情,如果失败,试着修复它并再做一次.如果仍然失败,请放弃

xoi*_*oid 1 perl

我正在寻找好的形式

if (! write_to_file($data) )
{
    open_this_file($file_name)
    write_to_file($data) or die "Cant write to $file_name" ;
}
Run Code Online (Sandbox Code Playgroud)

它看起来很不清楚,不是吗?怎么写它自我解释?

Zai*_*aid 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";
Run Code Online (Sandbox Code Playgroud)

do由于运算符优先级,您可以在没有块的情况下重写它.之间的逗号open_this_filewrite_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";
Run Code Online (Sandbox Code Playgroud)