суббота, 7 апреля 2012 г.

perl

описание 
my %hash = ();
 
Заполнение 
%hash = (
 'шляпа' => 'серая',
 'водка' => 'горькая',
 'вобла' => 'вкусная');
 
Проверка существования элемента 
if(exists($hash{"дождь"})){
 print "Элемент найден";
        }
else{
 print "Элемент не найден";
 }  
 
Массивы 
my @hostd = ();
my @hostdn = ();
 
Добавить элемент
push @hostdn, $cn; 

Число элементов массива
$size = $#array + 1;
 
Очистить массив
$#array = -1; 

 
пример из практики
 
use Fcntl; # для файловых констант

$filename="/var/log/uucp/Log";

sysopen(FH, $filename, O_RDONLY) or die "cannot open $filename : $!\n";

@num_port{ttyS0,ttyS1,ttyS4,ttyS5,ttyS6,ttyS7}= (1,3,5,7,9,11);

while (<FH>) {
 ($host, $session, $status, $text) = /^\S+ (\S+) \S+ \(\S+ \S+ (\S+)\) (\S+) (.*?)$/;
    if (($host eq "-")and($status eq "Incoming")) {
        ($user,$port) = ($text =~ / UU(\S+) port (\S+)\)/i);
        #подсчет соединений для каждого порта
        $sess_port{$port}++;
        # число звонков для каждого пользователя [0]
        ${$users{$user}}[0]++;
        # число звонков на порт для каждого пользователя []
        ${$users{$user}}[$num_port{$port}]++;
        # хеш имя_порта => [номер_сессии][имя_пользователя][номер_порта]
        ${$sess_id{$port}}[0]=$session;
        ${$sess_id{$port}}[1]=$user;
        ${$sess_id{$port}}[2]=$num_port{$port};
    }

    if ($text =~ /Line disconnected/o){
        foreach $itemp (keys %sess_id){
            if (${$sess_id{$itemp}}[0]eq$session){
            $err_port{$itemp}++;
            ${$users{ ${$sess_id{$itemp}}[1] }}[ ${$sess_id{$itemp}}[2] +1]++; #ошибки порта для каждого пользователя
            last;
            }
        }

    }
}

 

Комментариев нет:

Отправить комментарий