описание
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;
}
}
}
}
Комментариев нет:
Отправить комментарий