Один из моих коллег написал perl-скрипт, который запрашивает у пользователя домен/имя пользователя Windows, которое мы, конечно же, вводим в следующем формате domainname\username
. Затем модуль Getopt:Long преобразует это в строку, исключая символ '\' и делая строку неверной. Конечно, мы могли бы просто попросить всех наших пользователей ввести свою комбинацию домен/пользователь как domainname\\username
, но я действительно не хочу быть виноватым в том, что "исправьте пользователя, а не программу". Мы также используем созданный для этого модуль, я назову его OurCompany::ColdFusionAPI
, так как он обращается к ColdFusion.
Наш код выглядит так:
#!/usr/bin/perl
use common::sense;
use Getopt::Long;
use OurCompany::ColdFusionAPI;
my ($server_ip, $username, $password, $need_help);
GetOptions (
"ip|server-address=s" => \$server_ip,
"user-name=s" => \$username,
"password=s" => \$password,
"h|help" => \$need_help,
);
$username ||= shift;
$password ||= shift;
$server_ip ||= shift;
if (!$server_ip or $need_help){
print_help();
exit 0;
}
my $print_hash = sub { my $a = shift; say "$_\t=> $a->{$_}" foreach keys %$a; };
...
Если я добавлю строку say $username
, то она просто даст строку без '\'. Как я могу заставить perl сохранить «\»? Что-то вроде read -r
в bash.
'\'
ты говоришь? - person Axeman   schedule 08.12.2011