代码说明了一点,并没有在代码中使用sort,因为我不知道你使用这是perl中的内容代码。
/bash/perl
%ttys = ();
my @lsarray = `cat /home/delkav/labs-scripts/grep`;
my @array;
$array[0] = <STDIN>; < ONE
$array[1] = <STDIN>; < TWO
$array[2] = <STDIN>; < TRHEE
$array[3] = <STDIN>; < FOUR
$array[4] = <STDIN>; < FIVE
$array[5] = <STDIN>; < SIX
$array[6] = <STDIN>; < SEVEN
$array[7] = <STDIN>; < EIGHT
$array[8] = <STDIN>; < NINE
@ttys{@lsarray} = @array;
print "@{[%ttys]}\n"
/ home / delkav / labs-scripts / grep中的内容是:
$90850
$0
$389
$469
$670
$750
$684
$21744
$604
打印出脚本
$684
SEVEN
$469
FOUR
$21744
EIGHT
$670
FIVE
$389
TRHEE
$90850
ONE
$0
TWO
$750
SIX
$604
NINE
我需要输出如何。
$90850
ONE
$0
TWO
$389
THREE
$469
FOUR
$670
FIVE
$750
SIX
$684
SEVEN
$21744
EIGHT
$604
NINE
好的,谢谢你的帮助。
答案 0 :(得分:2)
如果您需要保留订单,则不应使用散列,因为散列函数不会维护订单。相反,你应该使用数组引用。也许是这样的:
#!/bash/perl
my @ttys;
my @lsarray = map { chomp; $_ } `cat /home/delkav/labs-scripts/grep`;
my @array;
chomp($array[$_] = <>) for 0..8;
push @ttys, [$array[$_], $lsarray[$_]] for 0..$#array;
print "$_->[0]\n$_->[1]\n" foreach @ttys;
答案 1 :(得分:0)
也许就是这样:
print "$_\n$ttys{$_}\n" for @lsarray;
答案 2 :(得分:0)
您应该始终 use strict
和use warnings
位于每个程序的顶部。您还应该打开数据文件并在Perl中读取它,而不是炮轰cat
。
该程序可以满足您的需求。
use strict;
use warnings;
open my $fh, '<', '/home/delkav/labs-scripts/grep' or die $!;
my @numbers = qw/ ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE TEN /;
my $i = 0;
while (<$fh>) {
print;
print $numbers[$i++], "\n";
}