Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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_Extract_Transfer - Fatal编程技术网

从一行中提取一个字符串并将其放入预切分行(Perl)

从一行中提取一个字符串并将其放入预切分行(Perl),perl,extract,transfer,Perl,Extract,Transfer,我在perl编程方面没有太多经验,但必须解决一个严重的问题。我有以下格式的数据: *IDENTIFIER A ABCDEFGHIJKLMNOPQRSTVUWXYZ 3. line 4. line *IDENTIFIER B ABCDEFGHIJKLMNOPQRSTVUWXYZ 3. line 4. line ... 我想从标识符下的行中删除前5个符号,并将它们添加到标识符行中。每个标识符以*开头。新文件应如下所示: *IDENTIFIER A:ABCDE

我在perl编程方面没有太多经验,但必须解决一个严重的问题。我有以下格式的数据:

*IDENTIFIER A  
ABCDEFGHIJKLMNOPQRSTVUWXYZ  
3. line  
4. line  
*IDENTIFIER B  
ABCDEFGHIJKLMNOPQRSTVUWXYZ  
3. line  
4. line  
...  
我想从标识符下的行中删除前5个符号,并将它们添加到标识符行中。每个标识符以*开头。新文件应如下所示:

*IDENTIFIER A:ABCDE  
FGHIJKLMNOPQRSTVUWXYZ  
3. line  
4. line  
*IDENTIFIER B:ABCDE  
FGHIJKLMNOPQRSTVUWXYZ  
3. line  
4. line  
...    
我会很高兴得到每一种帮助。THX

这并不难

while (<>) {
    if (/^\*/) {                                     # Identifier
        chomp;                                       # Remove the \n.
        my $nextline = <>;                           # Read the next line.
        my $first_5 = substr $nextline, 0, 5, q();   # Move the 1st 5 characters to a variable.
        print "$_:$first_5\n$nextline";              # Print the identifier, the 5 chars,
                                                     #     newline, nextline.
    } else {
        print
    }
}
while(){
如果(/^\*/){#标识符
chomp;#删除\n。
我的$nextline=#读下一行。
my$first_5=substr$nextline,0,5,q();#将前5个字符移动到变量中。
打印“$\$first\u 5\n$nextline”;#打印标识符、5个字符、,
#换行,下一行。
}否则{
打印
}
}

Hey choroba,非常感谢您的快速回复。这很好用!我不得不承认,这似乎比我想象的要容易。再一次。非常感谢。