我有两个关于Perl open函数的问题:
1)我似乎记得Perl最佳实践中的3参数版本open比两个参数版本更好,例如
open(OUT, '>>', $file);
Run Code Online (Sandbox Code Playgroud)
与
open(OUT, ">>$file");
Run Code Online (Sandbox Code Playgroud)
这是为什么?我试图告诉别人前几天使用3参数版本,但似乎无法用任何东西支持它.
2)我似乎还记得autovivified文件句柄比bareword文件句柄更受青睐(他们称之为不同的东西)?而且也记不住为什么,例如
open(my $out, '>>', $file);
Run Code Online (Sandbox Code Playgroud)
与
open(OUT, '>>', $file);
Run Code Online (Sandbox Code Playgroud)
这是strict件事吗?我似乎记得能够使用OUT,strict但我不记得了.
如何检查一行($ _ value)是Perl中的空行?还是另一个好方法来检查它而不是使用$ _?
我想这样编码
if($ _ eq'')#检查当前行是否为空行(没有任何字符){$ x = 0; }
我用下面的问题解决方案更新了一些代码.
我的test.txt用于解析:
constant fixup private GemAlarmFileName = <A "C:\\TMP\\ALARM.LOG">
vid = 0
name = ""
units = ""
constant fixup private GemConfigAlarms = <U1 0> /* my Comment */
vid = 1
name = "CONFIGALARMS"
units = ""
min = <U1 0>
max = <U1 2>
default = <U1 0>
Run Code Online (Sandbox Code Playgroud)
我的代码如下.
这就是为什么我需要最初设置$ x = 0.我不确定它是否是正常的解决方案.
sub ConstantParseAndPrint
{
if (/^$/) // SOLUTION!
{
$x = 0; …Run Code Online (Sandbox Code Playgroud)