|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Ilya Anfimov 2:5020/400 08 Nov 2001 17:18:45 To : Vladimir Podgorny Subject : Re: как раскодировать тему сообщения -------------------------------------------------------------------------------- On Wed, 7 Nov 2001 08:20:27 +0000 (UTC), Vladimir Podgorny <raven@cemetery.org.ua> wrote: >Ilya Anfimov <ilan@adt.ru> wrote: > >> Hичего, если я немного поправлю? > >Feel free :) > >>>#!/usr/bin/perl -wT >>>use strict; >>>use MIME::Base64 qw//; >>> >>>die "Usage: $0 line0 <line1> ...\n" unless @ARGV; >>>foreach my $line (@ARGV) { >> >> $line =~ s/=\?(?:[^?]+)\?(B|Q)\?([^?]+)\?=/(uc($1) eq 'B') ? > ^^^^^^^ - вот это $1, соотв. ^^ - $2 Hет, там в начале (?:. perldoc perlre Пример, кстати, проверен и работает. >> MIME::Base64::decode($2) : > ^^ - $3 >> qp_decode($2)/egi; > ^^ - $3 >> print $line."\n"; >>>} >> >> sub qp_decode { >> my $var = shift; >> $var =~ s/_/ /g; >> $var =~ s/=([0-9ABCDEF][0-9ABCDEF])/pack("H2", $1)/egi; > >Тут правильнее было бы s/=([\da-f]{2})/chr hex $1/egi - pack несколько >более тяжелая операция, нежели chr hex. chr hex -- это хорошо. Это, по крайней мере, красиво. Hасчет a-f -- в некоторых системах, в некоторых локалях это может прихватить так же несколько лишних символов. (Hу, там, например, от а до ф включительно). В зависимости от комбинации идей разработчиков и глюков реализаций. Потому я обычно избегаю использования ranges. Хотя здесь это вряд ли может привести к неприятным последствиям. > >> return $var; >> }; > >Anyway получить один и тот же результат можно путем разных извращений... :) > >-- >VP992-RIPE --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/1511768ce941.html, оценка из 5, голосов 10
|