0

代码不言自明,没有在代码中使用排序,因为我不知道你的用途这是 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

嗯,谢谢你的帮助。

4

3 回答 3

2

如果您需要保留顺序,则不应使用散列,因为散列函数不维护顺序。相反,您应该使用数组 ref。也许是这样的:

#!/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;
于 2012-07-31T06:11:40.157 回答
0

也许是这样的:

print "$_\n$ttys{$_}\n" for @lsarray;
于 2012-07-31T06:15:26.443 回答
0

您应该始终 处于每个程序的顶部use strictuse 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";
}
于 2012-07-31T11:52:02.473 回答