logo

Аргументи командного рядка Perl

Аргументи командного рядка надсилаються програмі на Perl так само, як і в будь-якій іншій мові. Масив @ARGV містить аргумент командного рядка. Немає необхідності використовувати змінні, навіть якщо ви використовуєте 'use strict'. За замовчуванням ця змінна існує завжди, і значення з командного рядка автоматично розміщуються всередині цієї змінної. Щоб отримати доступ до аргументів командного рядка вашого сценарію, вам потрібно просто прочитати масив @ARGV.

Perl дозволяє використовувати масив @ARGV як імена файлів за допомогою . $ARGV містить назву поточного файлу під час читання з .

Елементи масиву @ARGV

Масив @ARGV працює так само, як і звичайний масив. Його першим аргументом буде $ARGV[0], другим $ARGV[1] і так далі.


Приклад аргументу командного рядка Perl

Давайте розглянемо простий приклад друку аргументів командного рядка. У цьому прикладі ми надрукуємо вітальне повідомлення з іменем користувача як аргументом із командного рядка. Нам потрібні два аргументи командного рядка як ім’я та прізвище користувача.

Крок 1 Створіть сценарій Welcome.pl у вашій системі.

 #!/usr/bin/perl -w # (1) check for the number of command-line arguments entered $number_args = $#ARGV + 1; if ($number_args != 2) { print 'Wrong entry. Please enter your full name.
'; exit; } # (2) if two command line arguments received, $firstName=$ARGV[0]; $lastName=$ARGV[1]; print 'Welcome $firstName $lastName at JavaTpoint.
'; 

У наведеному вище сценарії спочатку перевіряється, чи надано два аргументи командного рядка. Якщо ні, це видасть помилку неправильного введення. І якщо так, він обробить ці аргументи як $ARGV[0] і $ARGV[1] відповідно.

Крок 2 Запустіть сценарій у консолі як perl welcome.pl Крістіан Грей

Примітка: перш ніж надавати цю команду, переконайтеся, що ви перебуваєте в каталозі, що містить ваш сценарій welcome.pl

Аргументи командного рядка Perl 1

Це результат, який ви отримаєте на своїй консолі.

Крок 2 Запустіть сценарій у консолі як perl welcome.pl Крістіан

Тут ми передаємо лише один аргумент із командного рядка.

Аргументи командного рядка Perl 2

У вихідних даних ви можете побачити повідомлення про неправильне введення для передачі одного аргументу.


Приклад аргументів командного рядка Perl із використанням циклу

Тепер ми запустимо цикл для друку аргументів командного рядка. У цьому прикладі ви можете ввести скільки завгодно аргументів.

Крок 1 Створіть сценарій loop.pl у вашій системі.

 #!/usr/bin/perl $get_args = $#ARGV + 1; print 'Total command line arguments received: $get_args
'; foreach $argument (0 .. $#ARGV) { print '$ARGV[$argument]
'; } 

Крок 2 Запустіть сценарій у консолі як perl loop.pl a b c d e f g h

Аргументи командного рядка Perl 3

Подивіться на результат вище, він також відображає загальну кількість аргументів, переданих у командному рядку. Тут ми передали 8 аргументів.


Perl Getopt::Long

Прості параметри командного рядка виконуються за допомогою параметра ?s. Складні параметри командного рядка виконуються за допомогою Getopt::Std і Getopt::Long.

Getopt означає GetOptions . Він обробляє вміст @ARGV на основі наданої нами конфігурації. Він повертає значення true або false на основі обробки.

приклад:

У цьому прикладі ми добре отримуємо вік користувача з командного рядка.

 use strict; use warnings; use 5.010; use Getopt::Long qw(GetOptions); my $x; GetOptions('from=s' => $x) or die 'Usage: $0 --from NAME
'; say'According to your age which is $x:'; if ($x >=18) { say 'You are eligible to vote'; } 

Ми оголосили змінну $x який буде зберігати значення, вставлене в --від зі стандартної консолі. The від=s оголошує викликаний параметр командного рядка --від із рядком після нього. Далі він відображається на змінній $x. Зворотний слеш () означає, що ми передаємо посилання на змінну.

Цей сценарій переключиться на в лише тоді, коли ми будемо запускати цей сценарій, передаючи щось, що виглядає як ім’я параметра та починається з a (-) але не оголошено в цьому сценарії.

Зараз ми запустимо цю програму.

Вихід:

Аргументи командного рядка Perl 4

Подивіться на результат: після введення віку на консолі ми отримали наведений вище результат.