Как передать значение в параметры подпрограммы Perl в командной строке? - PullRequest
1 голос
/ 11 февраля 2010

my test.pl скрипт, как показано ниже.

#!C:\Perl\bin\perl.exe
use strict;
use warnings;


sub printargs
{
    print "@_\n";
}

&printargs("hello", "world"); # Example prints "hello world"

Если я заменил printargs("hello", "world"); на print($a, $b);.

Как передать hello, world в $ a, $ b при запуске perl test.pl hello world в командной строке, спасибо.

Ответы [ 6 ]

4 голосов
/ 11 февраля 2010

Читайте о @ARGV в perldoc perlvar .

3 голосов
/ 11 февраля 2010

Аргументы командной строки находятся в массиве @ARGV. Просто передайте это вашей функции:

&print( @ARGV );

Вероятно, лучше избегать имени, подобного print, - его можно спутать со встроенной функцией с тем же именем.

3 голосов
/ 11 февраля 2010

$ ARGV [0] содержит первый аргумент, $ ARGV [1] содержит второй аргумент и т. Д.

$ # ARGV - это индекс последнего элемента массива @ARGV, поэтому число аргументов в командной строке равно $ # ARGV + 1.

1 голос
/ 11 февраля 2010

Вы хотите получить доступ к «параметрам командной строки» в Perl.

В основном Perl видит строку, которую вы передаете после фактического имени скрипта, как массив с именем @ ARGV.

Вот краткое руководство: http://devdaily.com/perl/edu/qanda/plqa00001.shtml

Просто нажмите "Параметры командной строки Perl", чтобы узнать больше.

0 голосов
/ 11 февраля 2010

Это также выведет «hello world» из аргументов командной строки при передаче данных в $ a и $ b в соответствии с запросом.

#!/usr/bin/perl -w

use warnings;
use strict;

sub printargs($$)
{
    print $_[0] . " " . $_[1] . "\n";
}

my($a,$b) = ($ARGV[0],$ARGV[1]);
printargs($a,$b);
0 голосов
/ 11 февраля 2010

По сути, как говорили другие, список @ARGV является ответом на ваш вопрос.

Теперь, если вы хотите пойти дальше и определить параметры командной строки для своих программ, у вас также должен быть лог в getargs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...