cat -E test1.txt
Run Code Online (Sandbox Code Playgroud)
输出:
car$
$
$
Run Code Online (Sandbox Code Playgroud)
我只想用“自行车”更改“汽车”并删除新/空行。
这是按预期工作的:
#!/usr/bin/perl -w
open(FILE1,"<","./test1.txt"); @araj=<FILE1>; close(FILE1);
open(FILE2,">","./test1.txt");
map {
s@car@bike@; s@^\n@@;
} @araj;
print(FILE2 @araj);
close(FILE2);
Run Code Online (Sandbox Code Playgroud)
和
cat -E test1.txt
Run Code Online (Sandbox Code Playgroud)
输出对我来说是 100% 正确的:
bike$
Run Code Online (Sandbox Code Playgroud)
但在上述情况下,我使用的是 2x 打开/关闭文件。所以我使用 2x 文件句柄。
我只想使用1x文件句柄
(这是为了学习目的,只是想了解 +> +>> >> 是如何工作的......)。
例如:
#!/usr/bin/perl -w
open(FILE2,"+<","./test1.txt"); #what file handle should be here? +> , +>> >> .... ?
@araj=<FILE2>;
map {
s@car@bike@; s@^\n@@;
} @araj;
print(FILE2 @araj);
close(FILE2);
Run Code Online (Sandbox Code Playgroud)
输出不正确:
car$
$
$
bike$
Run Code Online (Sandbox Code Playgroud)
为什么这是追加,但没有覆盖?当我使用其他文件句柄时,结果也不正确,例如空文件...哪个文件句柄用于读取和覆盖?