Pracuję nad skryptem w Perlu. Jak mogę przekazać do niego parametry wiersza poleceń?
Przykład:
script.pl "string1" "string2"
perl
command-line
lamcro
źródło
źródło
./script.pl
albo wiele, nic się nie wydarzy w czasie wykonywania.Odpowiedzi:
Zależy od tego, co chcesz zrobić. Jeśli chcesz użyć tych dwóch argumentów jako plików wejściowych, możesz je po prostu przekazać, a następnie użyć
<>
do odczytania ich zawartości.Jeśli mają inne znaczenie, możesz je łatwo wykorzystać
GetOpt::Std
iGetOpt::Long
przetworzyć.GetOpt::Std
obsługuje tylko przełączniki jednoznakowe iGetOpt::Long
jest znacznie bardziej elastyczny. OdGetOpt::Long
:Alternatywnie,
@ARGV
jest to specjalna zmienna, która zawiera wszystkie argumenty wiersza poleceń.$ARGV[0]
jest pierwszym (tj."string1"
w twoim przypadku) i$ARGV[1]
jest drugim argumentem. Nie potrzebujesz specjalnego modułu, aby uzyskać dostęp@ARGV
.źródło
Contains the name of the current file when reading from <> .
Przekazujesz je tak, jak myślisz, aw swoim skrypcie pobierasz je z tablicy
@ARGV
. Tak jak to:Od tutaj .
źródło
$#ARGV + 1
ciebie mógłbyś też powiedzieć@ARGV
ARGV[0]
lub$argv[1]
jeśli szukasz konkretnego argumentu.wypisze każdy argument.
źródło
Alternatywnie, bardziej seksowny, niebezpieczny sposób .....
my ($src, $dest) = @ARGV;
„Zakłada” dwie wartości są przekazywane. Dodatkowy kod może zweryfikować, że założenie jest bezpieczne.
źródło
@ARGV
bez żadnej akcji z Twojej strony, tak jak C / C ++ dostarcza je przez argv / argcJeszcze inną opcją jest użycie perl -s, np:
Następnie nazwij to tak:
Więcej informacji można znaleźć w oryginalnym artykule :
źródło
Możesz uzyskać do nich bezpośredni dostęp, przypisując specjalną zmienną
@ARGV
do listy zmiennych. Na przykład:perl tmp.pl 1 2 3 4 5
źródło
Jeśli argumenty są nazwami plików, z których mają być odczytane, użyj operatora rombu (<>), aby uzyskać dostęp do ich zawartości:
Jeśli argumentami są opcje / przełączniki, użyj GetOpt :: Std lub GetOpt :: Long, jak już pokazano na slavy13.myopenid.com.
Jeśli nie ma szans, że są czymś innym, możesz uzyskać do nich dostęp, przechodząc bezpośrednio przez @ARGV lub za pomocą
shift
polecenia:(Zauważ, że zrobienie tego z
shift
zadziała tylko wtedy, gdy jesteś poza wszystkimisub
s. Wewnątrz asub
, pobierze listę argumentów przekazanych do programu,sub
a nie tych przekazanych do programu).źródło
źródło
Jeśli potrzebujesz tylko niektórych wartości, możesz po prostu użyć tablicy @ARGV. Ale jeśli szukasz czegoś mocniejszego do przetwarzania niektórych opcji wiersza poleceń, powinieneś użyć Getopt :: Long .
źródło