open $FP,'>',$outfile or die $outfile." Cannot open file for writing\n";
>我的代码中有很多次这个说法.
>我想保持所有这些语句的格式相同,所以当有些事情发生变化时,它只会在一个地方改变.
>在Perl,我该如何解决这种情况?
应该使用宏或函数吗?
我已经看到这个SO线程How can I use macros in Perl?,但它并没有说太多关于如何编写一般的宏
#define fw(FP,outfile) open $FP,\ $outfile or die $outfile." Cannot open file for writing\n";
解决方法
首先,你应该写成:
open my $FP,$outfile or die "Could not open '$outfile' for writing:$!";
包括打开失败的原因.
如果你想封装,你可以写:
use Carp; sub openex { my ($mode,$filename) = @_; open my $h,$mode,$filename or croak "Could not open '$filename': $!"; return $h; } # later my $FP = openex('>',$outfile);
从Perl 5.10.1开始,autodie是核心,我将第二个Chas.欧文斯的建议使用它.