Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Обработка строк


Автор: study 26.11.2004, 10:43
Народ, помогите! Мне нужно из IP адреса убрать точки. Например, чтобы из 123.123.123.123 получилось 123123123123, как это сделать, если можно примерчик, заранее спасибо!

Автор: Secandr 26.11.2004, 11:23
$ip=~s/[.]//

Автор: study 26.11.2004, 11:32
Secandr, почему-то это код удаляет только первую точку

Код

$ip="123.123.123.123";
print "\n\n$ip";
$ip=~s/[.]//;
print "\n\n$ip";


результат:

123.123.123.123

123123.123.123

Автор: dimes 26.11.2004, 12:01
Код

$ip=~s/\.//g;

Автор: chaos 26.11.2004, 12:46
я бы сделал так
Код

$ip =~ m/(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3})/;
if (($1<256 && $1>0)&&($2<256)&&($3<256)&&($4<256)) {
 $ip = "$1$2$3$4";
}

Дабы исключить не ип

PS: Хотя примеры описанные выше куда элегантнне

Автор: Secandr 26.11.2004, 12:50
забыл g

Автор: study 26.11.2004, 12:57
Всем спасибо!!!

Автор: dimes 26.11.2004, 14:36
А теперь, было бы неплохо объяснить зачем ты это делаш...
перевод IP в число делается по другому а тот что сверху он не правильный (eg 12.255.255.255 и 122.55.255.255 )

Автор: chaos 26.11.2004, 15:18
Цитата(dimes @ 26.11.2004, 14:36)
А теперь, было бы неплохо объяснить зачем ты это делаш...
перевод IP в число делается по другому а тот что сверху он не правильный (eg 12.255.255.255 и 122.55.255.255 )

это ты кому?

Автор: korob2001 26.11.2004, 15:34
Код

#!/usr/bin/perl -w
use strict;
my $ip = "213.119.214.74";
$ip = join("", split(/\./, $ip));
print $ip;

Автор: ElectricalStorm 1.12.2004, 17:12
Код


Преобразовать IP в число:

unpack('N',pack('C4',split(/\./,$ip)))

И обратно:

join('.',unpack('C4',pack('N',$long)))


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)