Perl:如何指定以“开始”开头的行/&引用;
我有一个名为Perl:如何指定以“开始”开头的行/&引用;,perl,Perl,我有一个名为list.txt的文件,看起来是这样的:(它有500多行) 我想用list.txt的每一行生成.sh脚本。我可以用Perl实现这一点,但我有一个问题,因为我不知道如何指定以/开头的行 我的脚本如下: use strict; use warnings; open (IN, "<list_for_merging_chunks.sh"); while (<IN>) { if ($_=~ m/^/apps.*\n/) { my $file = $_
list.txt
的文件,看起来是这样的:(它有500多行)
我想用list.txt的每一行生成.sh脚本。我可以用Perl实现这一点,但我有一个问题,因为我不知道如何指定以/
开头的行
我的脚本如下:
use strict;
use warnings;
open (IN, "<list_for_merging_chunks.sh");
while (<IN>)
{
if ($_=~ m/^/apps.*\n/)
{
my $file = $_;
$file =~ s/.*\> //;
$file =~ s/\.txt/.sh/;
$file =~ s/\n//;
open (OUT, ">$file");
print OUT "\#!/bin/bash\n\#BSUB -J \"$file\"\n\#BSUB -o
/scratch/home/\n\#BSUB -e /scratch/home/$file\.out\n#BSUB -n 1\n\#BSUB -q
normal\n\#BSUB -P DBCDOBZAK\n\#BSUB -W 168:00\n";
print OUT $_;
close OUT;
}
}
exit;
我认为这与此文件有关:if($\u=~ m/^/apps.*\n/)
它似乎不喜欢它以
/
开头的事实。有什么我可以解决的吗?我假设有一个特殊的字符可以用来告诉Perl?非常感谢。将regexpr分隔符更改为regexpr中未使用的字符。在本例中,我使用代码>而不是/
:
$_=~ m!^/apps.*\n!
或替换/角色:
$_ =~ m/^\/apps.*\n/
可以使用黑色斜杠转义正则表达式中的元字符
m/^\/apps.*\n/
您还可以像这样更改模式匹配的分隔符
m{^/apps.*\n}
您似乎知道这一点,因为您已经在下面代码中的双引号字符串中完成了这一点
请注意,如果您在$\ucode>上操作,则不需要$\ucode=~
部件。如果您使用m/
,则意味着它位于$\uu
上
m/^\/apps.*\n/
m{^/apps.*\n}