Как я могу обрабатывать параметры, используя Perl в режиме -n или -p? - PullRequest
0 голосов
/ 28 ноября 2018

При запуске perl -n или perl -p каждый аргумент командной строки принимается как файл, который нужно открывать и обрабатывать построчно.Если вы хотите передать переключатели командной строки в этот скрипт, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Существует три основных способа передачи информации в Perl без использования STDIN или внешнего хранилища.

  • Аргументы

    При использовании -n или -p извлечениеаргументы в блоке BEGIN.

    perl -pe'BEGIN { ($x,$y)=splice(@ARGV,0,2) } f($x,$y)' -- "$x" "$y" ...
    
  • Параметры командной строки

    В полной программе вы должны использовать Getopt :: Long, но perl -s здесь подойдет.

    perl -spe'f($x,$y)' -- -x="$x" -y="$y" -- ...
    
  • Переменные среды

    X="$x" Y="$y" perl -pe'f($ENV{X},$ENV{Y})' -- ...
    
0 голосов
/ 28 ноября 2018

Вот краткий пример программы (назовите ее t.pl), как вы можете это сделать:

#!/bin/perl
use Getopt::Std;

BEGIN {
  my %opts;
  getopts('p', \%opts);
  $prefix = defined($opts{'p'}) ? 'prefix -> ' : '';
}

print $prefix, $_;

Назовите ее так:

perl -n t.pl file1 file2 file3

или (добавитпрефикс к каждой строке):

perl -n t.pl -p file1 file2 file3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...