perl 拆分字符串并追加第二个和第一个元素

ntjbwcob  于 2022-11-24  发布在  Perl
关注(0)|答案(2)|浏览(197)

我是Perl脚本的新手。尝试以下代码

#!/usr/bin/perl -w
our $sep = "-";

open my $data, $ARGV[0] or die "Can't open $ARGV[0] for reading: $!";
while( my $line = <$data> )
{
        $line =~ s/]:/\n]:/g;
        my @spl = split(', ', $line);
        $hello = $spl[2].'-'.$spl[1];
        print $hello;
        print "\n";
}

我的样品输入

, 1234, task]: 1122

我的当前输出

task
]: 1122
-1234

我期望的示例输出

task-1234]: 1122
rslzwgfq

rslzwgfq1#

想要的结果可以通过很多方法来实现。也许split在这个特定的情况下不是最好的方法。
输入的样本数据格式非常简单,可以用regex进行处理。

use strict;
use warnings;
use feature 'say';

my($fname,$regex);

$regex = qr/^, (\d+), (.+?)]: (\d+)$/;

while( <DATA> )
{
    next if /^\s*$/;
    my @data = $_ =~ /$regex/;
    say "$data[1]-$data[0]\]: $data[2]";
}

exit 0;

__DATA__
, 1234, task]: 1122

输出量

task-1234]: 1122

注意:将<DATA>替换为<>以处理命令行上指定的文件
以下代码示例利用split实现相同的结果

use strict;
use warnings;
use feature 'say';

while( <DATA> )
{
    next if /^\s*$/;
    my @data = split(/[, \]:]+/, $_);
    say "$data[2]-$data[1]\]: $data[3]";
}

exit 0;

__DATA__
, 1234, task]: 1122

输出量

task-1234]: 1122

你可以通过谷歌搜索Perl bookshelf开始学习Perl,虽然书已经过时了,但它们仍然很有价值。
请看下面的免费书籍,以获得最新的编程风格

互联网上有可用的plenty free perl programming books

1dkrff03

1dkrff032#

我能解决,但逻辑太差

open my $stack, $ARGV[0] or die "Can't open $ARGV[0] for reading: $!";
while( my $line = <$stack> )
{
        my @spl = split(']:', $line);
        my @spl1 = split(', ', $spl[0]);
        $line = $spl1[2].'-'.$spl1[1]."]:".$spl[1];
        print $line;
        print "\n";
}

预期产出

task-1234]: 1122

相关问题