我必须从文件中读取字符串,将它们分成两个字符的块并将其写入另一个文件。
我写了下面的代码片段,但我需要更改输入字符串的顺序。例如,如果有九个字符串,我需要读取它,如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";
}
}
答案 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