[Moscow.pm] туплю с регуляркой , если кто знает , помогите плиз: как заменить бэкслэш на слэш?

Dmitry Arsentiev dmarsentev на gmail.com
Чт Ноя 6 10:33:22 PST 2008


> А какие проблемы с $s =~ s#\\#/#g ?

Алексей, у меня не работает эта конструкция при условии,
что я не могу заключить исходную строку в одинарные кавычки.

Я могу только делать что-то с переменной, содержащей эту строку.

Сформулирую по-другому.
У меня есть переменная, содержщая строку.
Каким действием над этой переменной
я могу перевести содержащуюся в ней строку
в 'однокавычковый' режим?

Как переключатель в однокавычковый режим не сработали
ни q#$a#,  ни eval(q#$a#)


Вот скрипт.
-------------------------------------------------------------
#!/usr/bin/perl
use strict;
use utf8;

# эту строку трогать нельзя, трогать можно переменную $a
my $a = "image\02-1.gif image\02-2.gif image\02-2.gif и ещё много
разного в этой строке";

# надо получить
# image/02-1.gif image/02-2.gif image/02-2.gif и ещё много разного в этой строке

$a =~  s#\\#/#g;
print "$a\n";
-----------------------------------------------------------
Этот скрипт печатает смайлики вместо желаемых слэшей.




6 ноября 2008 г. 21:14 пользователь Alexey Beshenov <al на beshenov.ru> написал:
> On Thursday 06 November 2008 20:35:40 Dmitry Arsentiev wrote:
>> А можно уточняющий вопрос?
>> Пусть строка хранится в переменной $str
>> Пусть необходимо в ней сделать замену \ на /
>> При этом в строке $str могут быть фрагменты вида  image\02
>> Требуется, чтобы эти фрагменты приняли вид image/02
>> Как этого добиться?
>
> А какие проблемы с $s =~ s#\\#/#g ? Никаких не должно быть,
> если в строке есть фрагменты вида image\02. В исходном примере
> таких фрагментов не было --- там был символ 0x02, который в
> виндовом терминале и отображается как смайлик.
>
> --
> Setting Orange, Aftermath 18 YOLD 3174
> Alexey Beshenov  http://beshenov.ru/
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>


Подробная информация о списке рассылки Moscow-pm