Как вы анализируете простые параметры командной строки с Perl? - PullRequest
0 голосов
/ 10 декабря 2010

Когда я запускаю Perl-файл с вводом командной строки, он должен обновить поле в таблице.

Например,

perl function_impl.pl --address_only

, если он получает входной параметр --address_only, тогда tследует обновить только поле адреса в БД этого сценария Perl. Как это реализовать.

Ответы [ 2 ]

11 голосов
/ 10 декабря 2010

Getopt :: Long - очень распространенный и очень простой способ анализа параметров командной строки в Perl.

my %args = ();
GetOptions (\%args, 'address_only');       # will store true value in $args{address_only}

if ($args{address_only}) {
    # Update address
}

Пожалуйста, покажите нам код, который вы используете для обновления таблицы, чтобымы можем оказать помощь по этой части, если вам это нужно.

Кроме того, как вы будете указывать стоимость обновления?Из вашего примера вы не будете предоставлять его через командную строку, поэтому я предполагаю, что это жестко запрограммировано?Если вы хотите указать в командной строке, измените приведенный выше код так, чтобы он принимал значения для параметра:

my %args = ();
GetOptions (\%args, 'address_only=s'); # will store address value in $args{address_only}
# Usage: function_impl.pl --address_only joe@myaddress.com

В качестве тривиального примера вы можете построить часть «SET» оператора обновления:

my $set_fields = 0;
if ($args{address_only}) {
    $set_fields .= ", " if $set_fields; # comma separate if >1 set
    $set_fields .= qq[address = "$args{address_only}"];
    # or $set_fields .= qq[address = "$hardcoded_address"];
}
# Build the full UPDATE SQL statement using $set_fields
# Execute SQL statement
0 голосов
/ 10 декабря 2010

Если ваш скрипт принимает ноль или один аргумент, вы можете сделать:

if( $#ARGV == 0 ) {     # one argument passed
        if($ARGV[0] eq '--address_only') {
                # --address_only passed
        } else {
                # something else passed
        }
}elsif( $#ARGV == -1 ) { # no argument passed

}else{                   # more than one arg passed

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