改变读取字符串perl的顺序

时间:2016-05-04 16:32:48

标签: perl

我必须从文件中读取字符串,将它们分成两个字符的块并将其写入另一个文件。

我写了下面的代码片段,但我需要更改输入字符串的顺序。例如,如果有九个字符串,我需要读取它,如2,8,4,5,7,6,3,1,9或类似的东西

use strict;
use warnings;
use autodie;    #So I dont have to worry about my file

open( my $fh,  "<", "dataFile.txt" );
open( my $fh1, '>', 'report.txt' );



while ( my $line = <$fh> ) {
    chomp $line;

    my @line_array = split( /\s+/, $line );
       for ( unpack( "(A2)*", $line ) ) {
        print "$_\n";
        print $fh1 "$_\n";
    }
}

1 个答案:

答案 0 :(得分:1)

我已经尝试从您已编写的代码中弄清楚您的数据可能是什么样的

这有帮助吗?它将每个十八个字符的行分成九个字符对,然后根据您在问题中的顺序对它们进行洗牌,然后再打印它们

use strict;
use warnings;
use autodie;

#open my $fh,  '<', dataFile.txt'
open my $fh1, '>', 'report.txt';

my $fh = \*DATA;

use constant FIELD_ORDER => ( 2, 8, 4, 5, 7, 6, 3, 1, 9 );

while ( my $line = <$fh> ) {
    chomp $line;

    my @pairs = unpack '(A2)*', $line;

    print $fh1 "$_\n" for @pairs[ map {$_-1} FIELD_ORDER ];
}

__DATA__
112233445566778899

输出

22
88
44
55
77
66
33
11
99