Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl:如何指定以“开始”开头的行/&引用;_Perl - Fatal编程技术网

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}