Perl哈希和数组+;分类

Perl哈希和数组+;分类,perl,Perl,代码本身就说明了问题,没有在代码中使用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

代码本身就说明了问题,没有在代码中使用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"
打印脚本

$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

好的,谢谢你的帮助。

如果你需要保留顺序,你不应该使用散列,因为散列函数不维护顺序。相反,您应该使用数组引用。可能如下所示:

#!/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;
#/bash/perl
我的@ttys;
my@lsarray=map{chomp;$}`cat/home/delkav/labs scripts/grep`;
我的@数组;
0..8的chomp($array[$\u]=);
为0..$#数组推送@ttys、[$array[$\]、$lsarray[$\]];
打印“$\u->[0]\n$\u->[1]\n”foreach@ttys;
可能是这样的:

print "$_\n$ttys{$_}\n" for @lsarray;
您应该始终在每个程序的顶部使用严格的
警告。您还应该打开数据文件并在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";
}
使用严格;
使用警告;

打开我的$fh,'注意在OPs代码中,@lsarray的元素和%tty的键和值都已经有了换行符
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";
}