Perl @ARGV

KHyT

Знаток
Регистрация
26 Апр 2008
Сообщения
328
Реакции
25
Код:
#!/usr/bin/perl -w
use strict;
my $foo = join('',@ARGV);
if (is_tainted($foo)) {
        print "\$foo is tainted. Attempting to launder\n";
        my $pattern = qr(^\d{3}(-|\s+)?\d{3}(-|\s+)?\d{4}$);
        $foo = untaint($foo, $pattern);
}else{
        print "\$foo is not tainted!!\n";
}
sub is_tainted {
        my $check = shift;
        return  !eval { $check++, kill 0;1;};
}
sub untaint {
        my ($foo, $pattern) = @_;
        if ($foo =~ /($pattern)/) {
                $foo = $1;
                print "\$foo has been laundered!!\n";
                return $foo;
        }else{
                print "Unable to launder \$foo\n";
                return $foo;
        }
}

Объясните Новичку код а именно действия @ARGV это что то типа массива который принемает параметры командной строки, но где и куда вводятся эти параметры и каким образом??
 
Массив @ARGV - это список аргументов переданных скрипту в момент его запуска.
Например, так
Код:
%perl script_name.pl a b c d e
Далее у вас эти параметры объединяются в одно слово (abcde) и передаются в функцию.
 
  • Нравится
Реакции: KHyT
Массив @ARGV - это список аргументов переданных скрипту в момент его запуска.
Например, так
Код:
%perl script_name.pl a b c d e
Далее у вас эти параметры объединяются в одно слово (abcde) и передаются в функцию.
cпасибо прояснилось
А вот из этого же кода вот эту строку $foo = $1;
Код:
sub untaint {
        my ($foo, $pattern) = @_;
        if ($foo =~ /($pattern)/) {
                [COLOR="Red"]$foo = $1;[/COLOR]
                print "\$foo has been laundered!!\n";
                return $foo;
        }else{
                print "Unable to launder \$foo\n";
                return $foo;
        }
}
ведь нельзя использовать цифры в переменых $123 и т.д =
 
Код:
sub read_file
{
    local @ARGV = shift;
    [B][COLOR="Red"]local $/ = wantarray ? $/ : undef;
    <>;[/COLOR][/B]
}

обьясните пожалуйста код функции
 
Назад
Сверху