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

使用perl s/../…/e打印到文件描述符中,perl,Perl,我遇到以下perlcode错误: #!/usr/bin/perl open $fh, '>', 'myfile.txt' or die; s|(.*)|print $fh "Hello",$1," how are you"|e; close $fh or die 在“$fh”Hello”附近的./script.pl第3行中找到运算符所需的字符串 (在“你好”之前缺少接线员?) 我使用s |(.*)|…| e下次写入字符串的开头,如Hello Hello 文件myfile.txt的预期输出

我遇到以下
perl
code错误:

#!/usr/bin/perl
open $fh, '>', 'myfile.txt' or die;
s|(.*)|print $fh "Hello",$1," how are you"|e;
close $fh or die
在“$fh”Hello”附近的./script.pl第3行中找到运算符所需的字符串
(在“你好”之前缺少接线员?)

我使用
s |(.*)|…| e
下次写入字符串的开头,如
Hello Hello

文件
myfile.txt
的预期输出为

你好,你好吗

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


或者我必须以另一种方式更改
s|(.*)…|e
操作吗?

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

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

无论如何,始终使用它们是一种很好的做法。

当您可以使用Perl中最强大的工具之一—简单的正则表达式并非常轻松地完成同样的任务时,为什么要使用sed?为什么要从替换中写入文件?Perl对您的代码感到困惑,但您可以通过使用文件句柄的“表达式语法”来帮助它:
s |(.*)print{$fh}“Hello”、$1“你好”|e。但是更好的代码应该是:
s|(.*)|你好,1美元,你好吗|;打印$fh$
@Corion感谢您的回复,您提供的更好的代码是一个解决方案!