2015-08-11 2 views
-1

У меня есть путь в строке с пробелами.Perl, чтобы избежать пробелов в пути

Например: $file="/application/Revenue Setting/settings.xml"

Я знаю, что нужно поставить «\» перед пробелом, чтобы заставить его работать. Я просто не могу заставить регулярное выражение заставить его работать.

Любая помощь была бы принята с благодарностью.

+3

Вам не нужно указывать обратную косу перед пространством, чтобы Perl мог видеть это как пространство. То, что вы делаете, это присвоение строкового значения скалярному '$ file', и вы вообще ничего не делаете с регулярными выражениями. Можете ли вы показать нам фактический код, с которым вы столкнулись, и описать проблему? –

+3

Что вы делаете с '$ file', который, по вашему мнению, требует пробелов? Если вы просто хотите открыть его для чтения, тогда 'open my $ fh, '<', $ file' будет работать нормально, так как это – Borodin

ответ

4

Похоже, вы строите команду оболочки. Если это так, вам нужно избегать гораздо больше, чем просто пробелы.

Если вы не можете избежать оболочки, вы должны использовать String::ShellQuote's shell_quote.

use String::ShellQuote qw(shell_quote); 

my $cmd = shell_quote("xml-pretty", $xml_qfn); 
my $pretty_xml = `$cmd`; 
Смежные вопросы