nixp.ru v3.0

20 января 2017,
пятница,
12:52:14 MSK

DevOps с компанией «Флант»
Mpa3b написал 21 апреля 2005 года в 15:21 (340 просмотров) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 1 комментарий на сайте.

Доброго время суток. Хочу попросить помощи. Пишу скрипт на Perl для обработки лог файла Squid, надо что бы считал трафик по пользователям иотрубал их при привышениии лимита, пишу впервые на этом языке, вот что получилось:

#!/usr/bin/perl

open( f_squid,»

%ipbyte=();%iplog=();

$sum=0;

while( $str=readline(f_squid) )

{

( $time,$name,$byte,$ip, $url)=split (' '), ;

$sum+=$byte; #общий http траффик

$ipbyte{$ip}+=$byte; #траффик по айпишникам

$url=~/[^\/]*\/\/[^\/]*/;

$url=$&;

$iplog{$ip}{$url}+=$byte; #эта строчка нужна если хотите еще разделять урлы по айпишникам

print «trafik: $ipbyte{$ip}\n», «summa: $sum\n», «Time: $time\n», «$str\n» ;

}

почемуто все переменные кроме $srt, пустые, как сделать что бы работало?

Feuerbach

Прочти внимательно perldoc -f split.

Хинт. Если хочешь, чтобы перл сам догадывался о том, что ты хочешь сплитануть — помести это в $_. Иначе указывай явно.

Mpa3b

Спасибо указал явно, а как примерно с $_ ?

Feuerbach


while(  ) #строка читается в $_
{
    ( $time,$name,$byte,$ip, $url)=split; #split без параметров разбивает $_ по пробелам
ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.