2014-08-02 3 views
0

Я хотел бы отменить и разбить строку так же, как Bash (исключая `и $). Учитывая строку:Perl: Parse string как shell

'"'"'\""'"' foo\ bar\" '\" '\ quux 

Я хотел бы массив, содержащий:

@a = (q("'""), 'foo bar"', '\" quux'); 

ответ

3
use Text::ParseWords(); 
my @list = Text::ParseWords::shellwords($string); 
+1

Почему 'require', а не' use'? – TLP

+0

Поскольку нет никаких причин для импорта каких-либо подпрограмм. 'use Module;' = 'BEGIN {require Module; Module-> import (LIST); } ', см. perldoc http://perldoc.perl.org/functions/use.html – ernix

+4

Можно утверждать, что подпрограммы импорта - это то, почему вы используете модуль в первую очередь. Если вы не хотите ничего импортировать, вы можете использовать 'Text> ParseWords()'. – TLP