在我的perl脚本中,我有一个字符串变量,其中包含''。我必须用'20150101'之类的正确日期替换它。我尝试了下面但它期望变量作为文件。你能指出这里有什么问题吗?
print_val
答案 0 :(得分:3)
您不需要sed
,它适用于文件内容。你可以这样做:
#!/usr/bin/perl
use strict;
use warnings;
my $name="FILE_NAME_<DATE>.txt";
my $findDT="<DATE>";
my $dt="20150101";
# First make a copy of your original variable
my $realFileName = $name;
# Then, replace the variable
$realFileName =~ s/$findDT/$dt/;
print "$name\n";
print "$realFileName\n";
如评论中所述,请记住始终use strict;
和use warnings;
。他们没有任何成本,而且帮助很大!
答案 1 :(得分:3)
我不知道你为什么使用sed。将脚本更改为此。
r - 执行非破坏性替换并返回新值
检查here
#!/usr/bin/perl
use strict;
use warnings;
my $name="FILE_NAME_<DATE>.txt";
my $findDT="<DATE>";
my $dt="20150101";
my $changedFileName = $name=~ s/$findDT/$dt/r;
print "Before Change: $name \n";
print "After Change: $changedFileName \n";