使用perl s /.../.../ e打印到文件描述符中

use*_*588 3 perl

我遇到以下perl代码的错误:

#!/usr/bin/perl
open $fh, '>', 'myfile.txt' or die;
s|(.*)|print $fh "Hello",$1," how are you"|e;
close $fh or die
Run Code Online (Sandbox Code Playgroud)

字符串找到运算符在./script.pl第3行的位置,靠近"$ fh"Hello""
(在"Hello"之前缺少运算符?)

我用s|(.*)|...|e另一次写字符串的开头就好了Hello Hello.

预期输出的文件myfile.txt是

你好,你好吗?

有没有办法让它与实际操作一起运行?

或者我必须s|(.*)|...|e以其他方式改变操作吗?

cho*_*oba 5

有趣的是,有效的是将文件句柄括在花括号中:

s/(.*)/print {$fh} "Hello",$1," how are you"/e;
Run Code Online (Sandbox Code Playgroud)

无论如何,总是使用它们是一个好习惯.