Коллеги,Пищу простенький анонимайзер на Perl
Как заменить все ссылки в странице $Page на кодированные Base64?
Туплю, и дальше $Result =~ s/(http:\/\/.+?)//g; дело не движется..
Как между слешами // вставить функцию code_base64()?
цината из нагугленого мана:например нужно переделать все escape последовательности, для этого вызывается соответствующая подпрограмма:
$text =~ s/(&.*?;)/&esc2char($1)/egs;
т.е. из регулярного выражения происходит вызов подпрограммы.а вообще зачем именно в регексе это делать - разберите, измените, соберите.
> Коллеги,
> Пищу простенький анонимайзер на Perl
> Как заменить все ссылки в странице $Page на кодированные Base64?
> Туплю, и дальше $Result =~ s/(http:\/\/.+?)//g; дело не движется..
> Как между слешами // вставить функцию code_base64()?Использовать модификатор e
а поиграем в сноудена? ))#!/usr/bin/perlвот, ещё сюда можно глянуть => http://www.jmarshall.com/tools/cgiproxy/use strict;
use warnings;
use MIME::Base64;my $url = "http://ya.ru";
$url =~ s/($url)/encode_base64($1)/e;
print $url;
>[оверквотинг удален]
>> Как между слешами // вставить функцию code_base64()?
> Использовать модификатор e
> а поиграем в сноудена? ))
>#!/usr/bin/perl
> use strict;
> use warnings;
> use MIME::Base64;
> my $url = "http://ya.ru";
> $url =~ s/($url)/encode_base64($1)/e;
> print $url;вот, ещё сюда можно глянуть => http://www.jmarshall.com/tools/cgiproxy/зачем тут вообще регекс? )
> зачем тут вообще регекс? )шифруемся же, код тоже должен быть запутанным ))
>> зачем тут вообще регекс? )
> шифруемся же, код тоже должен быть запутанным ))Сваял)))))):
$Result =~ s,(http://.+?)(?=\s|['"]),"/cgi-bin/anon.cgi?session=".encode_base64($1),ge;Только после замены, перед последней кавычной переносит строку:
<img src="/cgi-bin/zewa.cgi?session=aHR0cDovLzIxNy4xNzIuMTguMjQxOjE1MTIxL2JhbXQvb2sucG5n
">В принципе, работает и так, но для красоты хотелось бы перенос убрать. Откуда он вообще??
>>> зачем тут вообще регекс? )
>> шифруемся же, код тоже должен быть запутанным ))
> Сваял)))))):
> $Result =~ s,(http://.+?)(?=\s|['"]),"/cgi-bin/anon.cgi?session=".encode_base64($1),ge;
> Только после замены, перед последней кавычной переносит строку:
> <img src="/cgi-bin/zewa.cgi?session=aHR0cDovLzIxNy4xNzIuMTguMjQxOjE1MTIxL2JhbXQvb2sucG5n
> ">
> В принципе, работает и так, но для красоты хотелось бы перенос убрать.
> Откуда он вообще??Читаем ОПИСАНИЕ к http://search.cpan.org/~gaas/MIME-Base64-3.14/Base64.pm
Кодирование данных производится путём вызова функции encode_base64().
Первым аргументом является строка байтов для кодирования.
Вторым аргументом является использование последовательности конца строки.
Это необязательный параметр и по умолчанию "\n". Возвращаемая закодированная строка
разбивается на строки не более чем 76 символов каждая и всё это заканчивается с $eol,
если она не пуста. Передайте пустую строку в качестве второго аргумента, если вы не
хотите, чтобы закодированная строка разбивалась на подстроки (части).Функция будет вызывать croak с "Wide character in subroutine entry", если $bytes содержит
символы с кодом выше 255. Кодирование base64 определяется только для однобайтовых символов.
Используйте модуль Encode, чтобы выбрать кодировку байт, кторую вы хотите.hint encode_base64($1,"")
> hint encode_base64($1,"")Ох уж этот Перл.. Думаешь - баг, а оказывается это фича..