Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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
Regex 使用正则表达式将标量的一部分赋给另一个变量_Regex_Perl - Fatal编程技术网

Regex 使用正则表达式将标量的一部分赋给另一个变量

Regex 使用正则表达式将标量的一部分赋给另一个变量,regex,perl,Regex,Perl,我有一列标量(分配给变量$contig),它们看起来都是这样的: c46360_g1_i1_resultsMinus3HEditlen=341 我想获取第一部分(c46360_g1_i1)并将其分配给一个新变量并打印它。基本上,在该列中的所有标量上切掉“_resultsMinus3HEditlen=341”。c、g和i后面的数字都不同 以下是我目前掌握的代码: while ( my $line = <RESULTS> ) { chomp $line; my @col

我有一列标量(分配给变量$contig),它们看起来都是这样的:

c46360_g1_i1_resultsMinus3HEditlen=341
我想获取第一部分(c46360_g1_i1)并将其分配给一个新变量并打印它。基本上,在该列中的所有标量上切掉“_resultsMinus3HEditlen=341”。c、g和i后面的数字都不同

以下是我目前掌握的代码:

while ( my $line = <RESULTS> ) {
    chomp $line;
    my @column = split( /[\s|]/, $line );
    my $goID = $column[4];
    my $contig = $column[0];
    $goHash{$contig} = $goID;
    print $contig, "\t", $goID, "\n";
}
while(我的$line=){
chomp$行;
my@column=split(/[\s |]/,$line);
my$goID=$column[4];
my$contig=$column[0];
$goHash{$contig}=$goID;
打印$contig、“\t”、$goID、“\n”;
}

这是一个示例代码,用于实现您的期望:

perl -E '
    my $var = "c46360_g1_i1_resultsMinus3HEditlen=341";
    (my $newvar = $var) =~ s/_resultsMinus3HEditlen=\d+//;
    say $newvar
'

这是什么语言?
my ($contig_prefix) = $contig =~ /^(c[0-9]+_g[0-9]+_i[0-9]+)/;