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

順序を維持する必要がある場合、ハッシュ関数は順序を維持しないため、ハッシュを使用しないでください。代わりに、配列参照を使用する必要があります。多分このように:

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

あなたは常に 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 に答える
0

多分このように:

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