Próbowałem pobrać plik z nazwą folderu (np. Pro) i lokalizacją (np. "/C/lol/ap/a/ds/mfile/stup/projes/demo/mfile.txt) i uruchom skrypt (np. Readfile Perl. Pl) Korzystanie z linii poleceń argumenty

Przykładowy skrypt: (Perl ReadFile.pl)

use strict;
use warnings;
use Getopt::Long qw(GetOptions);
my $pro;
my $mfile;
my $odir;
GetOptions('pro' => \$pro) or die "Usage: $0 --pro\n";
GetOptions('mfile' =>\$mfile) or die "Usage:$0 --mfile\n";
GetOptions('odir' =>\$odir) or die "Usage:$0 --odir\n";
print $pro ? 'pro' : 'no pro';

Błąd:

Unknown option: mfile
Unknown option: odir
Usage: readfile.pl --pro

Aby uruchomić wiersz poleceń w następujący sposób:

Powinienem utworzyć skrypt do uruchomienia linii poleceń w następujący sposób.

perl readfile.pl -pro “pr1” -mfile “/c/lol/ap/a/ds/crent/stup/pjects/DEMO/mfile.txt” -odir “/home/html_files”
0
user7567583 16 luty 2017, 15:13

2 odpowiedzi

Najlepsza odpowiedź

Połączenie GetOptions('pro' => \$pro) widzi wszystkie opcje inne niż -pro jako nieprawidłowe, więc musisz przetwarzać wszystkie możliwe opcje wiersza poleceń w jednym połączeniu

Ponieważ opcje mają wartość łańcuchową, musisz także dołączyć =s do nazwy opcji

Tak by wyglądało

use strict;
use warnings 'all';

use Getopt::Long 'GetOptions';

GetOptions(
    'pro=s'   => \my $pro,
    'mfile=s' => \my $mfile,
    'odir=s'  => \my $odir,
);

print $pro   ? "pro   = $pro\n"   : "no pro\n";
print $mfile ? "mfile = $mfile\n" : "no mfile\n";
print $odir  ? "odir  = $odir\n"  : "no odir\n";

Wynik

pro   = pr1
mfile = /c/lol/ap/a/ds/crent/stup/pjects/DEMO/mfile.txt
odir  = /home/html_files
1
Borodin 17 luty 2017, 12:02

Nie jestem pewien, co próbujesz osiągnąć tutaj, ale twoje użycie GetOptions jest złe. Jeśli go dzwoniysz, stara się przetwarzać Wszystkie opcje poleceń , a nie tylko jeden. Dzięki temu wszystko nie zostało zdefiniowane w pierwszym połączeniu do GetOption kończy się wywołując część or die ... na końcu i zatrzymuje program, co powoduje komunikat użytkowania. Proszę obejrzeć Perldoc dla przydatnych przykładów.

Musisz także użyć dwóch myślników do opcji w połączeniu poleceń, aby pozwolić mu pracować ...

1
SREagle 16 luty 2017, 12:43