aur*_*rya 3 perl cross-platform
我想使用这段代码:
if ($windows) {
local $/ = "\r\n";
} else {
local $/ = "\n";
}
# ... code reading a file line by line
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为本地将范围限制在括号内.我该怎么办 ?
这是正确的方法吗?
if ($windows) {
$/ = "\r\n";
} else {
$/ = "\n";
}
# ... code reading a file line by line
Run Code Online (Sandbox Code Playgroud)
我很害怕它可能会对其他程序产生一些副作用..
第一种方法是使用条件运算符:
{ local $/ = $windows ? "\r\n" : "\n";
...
}
Run Code Online (Sandbox Code Playgroud)
你能做到的另一种方式是:
{ # enclosing scope
local $/ = "\n";
if ( $windows ) { $/ = "\r\n"; }
...
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以local先将其分配,然后分配:
{ local $/;
if ( $windows ) {
$/ = "\r\n";
}
else {
$/ = "\n";
}
...
}
Run Code Online (Sandbox Code Playgroud)