'split' не обрабатывает лишние начальные, конечные и встроенные пробелы. Ваша лучшая ставка - повторное совпадение с непробельными символами, m{\S+}gso
.
Первый параметр командной строки - $ARGV[0]
. Сложив это вместе, мы имеем:
#! /usr/bin/perl
use strict;
use warnings;
my @words = $ARGV[0] =~ m{\S+}gso;
for (my $i = 0; $i < @words; $i++) {
print "word", $i + 1, " = ", $words[$i], "\n";
}
(Я итерировал по массиву, используя индекс только потому, что вопрос был изначально сформулирован с точки зрения выдачи возрастающего значения с каждой строкой. Обычно мы хотели бы просто использовать for
или foreach
для итерации список напрямую.)
Позвонив как:
perl test.pl ' This is a sentence '
печать:
word1 = This
word2 = is
word3 = a
word4 = sentence
Если вы явно хотите получить входные данные для длинного имени опции с двумя тире, используйте Getopt :: Long, как описано Квентином.