【发布时间】:2019-02-05 17:40:45
【问题描述】:
我遇到以下perl 代码的错误:
#!/usr/bin/perl
open $fh, '>', 'myfile.txt' or die;
s|(.*)|print $fh "Hello",$1," how are you"|e;
close $fh or die
在 ./script.pl 第 3 行,“$fh "Hello"" 附近的操作员预期的位置找到字符串
(“Hello”之前缺少运算符?)
我再次使用s|(.*)|...|e 写入字符串的开头,例如Hello Hello。
文件myfile.txt的预期输出是
你好,你好吗?
有没有办法让它与实际操作一起运行?
或者我必须以其他方式更改s|(.*)|...|e 操作吗?
【问题讨论】:
-
当您可以使用 Perl 中最强大的工具之一 - 简单的 RegEx 并非常轻松地完成相同的事情时,为什么还要使用 sed。
-
为什么要从替换中写入文件? Perl 对您的代码感到困惑,但您可以通过使用文件句柄的“表达式语法”来帮助它:
s|(.*)|print {$fh} "Hello",$1," how are you";|e;。但更好的代码是:s|(.*)|Hello,$1, how are you|; print $fh $_;. -
@Corion 感谢您的回复,您提供的更好的代码是一个解决方案!
标签: perl