繁体   English   中英

Perl哈希和数组+排序

[英]Perl hash and array + sort

代码说明了一点,没有在代码中使用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

好的,谢谢你的帮助。

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

#!/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;

也许这样:

print "$_\n$ttys{$_}\n" for @lsarray;

您应该始终 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";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM