0

次のように実行したいと思います

$ perl test.pl tex
結果:
1. テキサス州
2. ヒューストン、テキサス州
3. DFW テキサス

オプション?2
Telneting to: Houston Texas

私は基本的に配列を検索し、それに数値を割り当てて、毎回完全な値ではなくそれを呼び出したいと思っています。

4

2 に答える 2

1

これは、見かけよりも単純な問題です。

use strict;
use warnings;

@ARGV == 1 or die "Usage: perl test.pl <location>\n";

my $place = quotemeta shift;

open my $fh, '<', 'telnets.txt' or die $!;
my @telnets = grep /$place/i, <$fh>;
die "No matching telnets\n" unless @telnets;
chomp @telnets;

print "RESULTS:\n";
printf "%d . %s\n", $_ + 1, $telnets[$_] for 0 .. $#telnets;
print "\n";

print "Option? ";

my $option = <STDIN>;
$option =~ s/\s+//g;

die "Invalid selection $option\n" unless $option > 0 and $telnets[$option-1];

print "Telneting to: $telnets[$option-1]\n";
于 2012-06-22T20:17:54.977 に答える
0

ファイルplaces.txtに含める

Texas
Houston Texas
DFW Texas

次に、次の Perl スクリプトが目的の処理を実行します。スクリプト内のコメントで説明します。

#!/usr/bin/perl

use warnings;
use strict;
use integer;

our $filename_place = 'places.txt';
our $index_field_width = 2;

# Read in the place data.
my @place;
open PLACE, '<', $filename_place;
while (<PLACE>) {
    chomp;
    push @place, $_;
}
close PLACE;

# Print a menu.
for (my $i = 0; $i < @place; ++$i) {
    printf "%${index_field_width}d. %s\n", $i+1, $place[$i];
}

# Let the user choose.
print "\nOption? ";
my $option = <>;
chomp $option;
$option >= 1 && $option <= @place
  or die "$0: the option chosen is out of range\n";

# Act on the user's choice.  (Of course, you can put
# here whatever action you like but, as written, the
# following produces your sample output.)
print "Telneting to: ${place[$option-1]}\n\n";
于 2012-06-22T18:00:48.643 に答える