2013-10-24 5 views
1

Я использую GetOptions, чтобы действовать как переключатель в моем perl-коде. У меня есть массив, который должен быть разделен специальным символом. В настоящее время я могу написать этот следующий код.Как называть getoptions специального символа?

&GetOptions ('sep:i'); if ($opt_sep){ $sep = "\.";}
else {$sep = "\/";}

когда применить это -sep 1, мой вывод будет Flower.Red.Small, без этого заявления или -sep 0, мой вывод будет Flower/Red/Small .Any идеи точно ссылаться на любой специальный символ, который Задан пользователь, чтобы отделить мое выходное заявление? Сепаратором может быть любой символ # @^* & % ; -. Спасибо заранее.

+1

Unrelated на ваш главный вопрос, но поставки варианта с дефолтом лучше сделать через: 'моего% ОПТС = (Сентябрь => "\ /"); & GetOptions (\% opt, 'sep: i'); 'и затем просто используйте' $ opt {sep} 'в остальной части кода. – DVK

+1

И просто предложение: вам не нужно использовать & в начале вызова подпрограммы. Вы можете просто написать GetOptions (...) – szabgab

+0

@DVK, i относится к целому числу справа? Специальный символ недействителен, если я назначаю 'sep: i'? – annel

ответ

1

Вы просите следующее?

my @fields = split /\Q$opt_sep/, $str; 
0

Вы можете использовать s (строку) вместо i (целого числа). Обратитесь к Getopt::Long:

use warnings; 
use strict; 
use Getopt::Long qw(GetOptions); 

my %opt = (sep => '/'); 
GetOptions(\%opt, 'sep=s'); 

my @stuff = qw(Flower Red Small); 
print join($opt{sep}, @stuff), "\n"; 

__END__ 

script.pl -sep/
Flower/Red/Small 

script.pl -sep . 
Flower.Red.Small 

script.pl -sep @ 
[email protected]@Small 
+0

Как-то я получаю неизвестный вариант sep. – annel

Смежные вопросы