Top.Mail.Ru
? ?

Entries by tag: parse

 Вещь совсем тривиальная и простая как валенок, но пусть будет. Среди наших перловых костылей часто натыкаюсь на скрипты, принимающие на вход целый паровоз безымянных параметров и поди угадай, что бы это значило. Выглядит примерно так: mysupertrouperscript.pl 592 1 1 2010-01-01. Чтобы разобраться в природе всех этих чисел приходится смотреть в исходный код и искать, каким образом обрабатываются входные аргументы. Другая проблема в том, что нельзя изменить порядок следования аргументов, а в некоторых случаях, и исключить какие-то из них.
Решение состоит в замене входных параметров конструкциями вида --argname[=value], разбирать немногим сложнее, зато вызов скрипта становится нагляднее:

#!/usr/bin/perl
# mysupertrouperscript.pl
 
use strict;
...
my $ID = 0;
my $DATE = '0000-00-00';
my $PRINT = 0;
my $DEBUG = 0;

sub parse_args {
  my $f_date = 0;
  for (my $i = 0; $i < scalar(@ARGV); $i++) {
    $ID = $1 if ($ARGV[$i] =~ /--id=(\d+)/);
    if ($ARGV[$i]=~/--date=(\d{4}-\d{1,2}-\d{1,2})/) {
      $DATE = $1;
      $f_date = 1;
    }
    $PRINT = 1 if ($ARGV[$i] =~ /--print/);
    $DEBUG = 1 if ($ARGV[$i] =~ /--debug/);
  }
  warn "WARNING: date is not defined, $DATE will be used.\n"if ($f_date == 0);
  if ($ID == 0) {
    warn "ERROR: identifier is not defined.\n";
    exit 1;
  }
  warn "INFO: print mode is on\n" if ($PRINT > 0);
  warn "INFO: debug mode is on\n" if ($DEBUG > 0);
}
...
parse_args();
...

В этом разе параметры запуска скрипта более очевидны, а их порядок следования не такой строгий:
mysupertrouperscript.pl --id=592 --date=2010-01-01 --print --debug

Tags:

Profile

Image
Imagecpplang
cpplang

Latest Month

January 2020
S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 

Tags

Syndicate

RSS Atom

Comments

  • cpplang
    11 Jul 2012, 07:04
    Спасибо =) я знаю intuit, очень крутой сервис. тока я по ключам его настроила => а задача была по сертификатам =(, у меня как раз не выходит центр сертификации установить на мой сервер.

    но статья…
  • cpplang
    10 Jul 2012, 10:08
    Ничего подобного, наоборот, удивляюсь.

    Кстати, есть такая классная тётка, Лапонина Ольга Германовна, она в МГУ преподаёт. У неё есть учебник по протоколам безопасного сетевого взаимодействия, и там…
  • cpplang
    10 Jul 2012, 07:20
    чувствую нотки сарказма в ваших словах...

    нет, на винде.
  • cpplang
    9 Jul 2012, 20:15
    ipsec? вот это да, круть какая. не на FreeBSD случаем?
  • cpplang
    9 Jul 2012, 07:19
    на данный момент, пытаюсь настроить ipsec между машинами.

    Извините за глупые вопросы, если что.
Powered by LiveJournal.com
Designed by Emile Ong
Image