我正在处理一个问题,并在数组中进行迭代。我是perl的新手,很抱歉,如果这是我看不到的非常明显的事情。 我想根据原始字符串中的关键字对输出进行排序。因为我有两个foreach循环给我这样的东西:
[blup]
[ich]
[du]
[er]
[sie]
[es]
something something something
somethingelse something else something else
我想按照原始字符串中提取子字符串的关键字来对其进行排序:
[blup blup]
[ich]
something something something
[er]
[sie]
[es]
something else something else something else
感谢您的帮助!
这是我的代码:
#!/usr/bin/perl
# perl -d ./perl_debugger.pl
use strict;
use warnings;
use Data::Dumper qw(Dumper);
use File::Slurp;
my @a_linesorig;
my @solution;
my $line;
my $str;
my $grab;
my $s;
my $rs;
my $capture;
open(my $fh, "<", "output.txt")
or die "cannot open < output.txt: $!";
$line = read_file('output.txt');
$line = read_file('output.txt');
@a_linesorig = split( /\*/, $line);
@solution = split( /\bsolution\b/, $line);
close $fh
or die "can't close file: $!";
my $filename = 'neu.txt';
open(my $fh1, '>', $filename)
or die "can't open file: $!";
foreach $str (@a_linesorig) {
if ($str =~ (/\[(.*?)\]/)) {
print ($fh1 "content bracket: $1\n\n");
}
}
foreach $str (@a_linesorig) {
if ($str =~ /\brewrites\b([^\|]+)((\bcpu\b))*/g) {
print ($fh1 "decision: $&\n\n");
}
}
close $fh1
or die "can't close file: $!";
答案 0 :(得分:0)
在计算结果时,您可以将它们存储在散列中,最后可以遍历散列(按排序键)
这是未经检查的伪perl,但概念是:
定义哈希:
%hash
当您存储条目时,您将
$hash{$key-that-you-want-to-sort-by} = $Thing-that-you-want-to-print
然后,当你完成后,你可以循环键盘
for (my $key (sort keys $hash)) {
print $key{$hash};
}
答案 1 :(得分:0)
在高级别,我会说你应该使用哈希,谁的键是原始字符串中的单词,谁的值是你想要保留的顺序。
然后,在您处理完输入后,您将查看哈希的键,按您的顺序排序,并打印循环内每个单词的结果。