Возвращаем из subroutine массив с данными perl

Posted in Новости on 20 июня, 2013 by admin

Пример sub :

sub test {
my @arr = ("1", "2", "3", "4");
};

Чтобы вернуть массив, мы возвращаем ссылку на него :

sub test {
my @arr = ("1", "2", "3", "4");
reutrn \@arr;
};

Далее в скрипте присваиваем ссылку переменной :

my $ref = &test();

и разыменовываем ссылку на массив, тем самым получая содержимое массива :

my @arr_ref = @$ref;

Итоговая тестовый скрипт выглядит так :

#!/usr/bin/perl

use strict;
use warnings;

sub test { my @test = ("1", "2", "3", "4"); return \@test;};
my $ref = &test();
print "@$ref[1]"; # обращаемся к элементам массива напрямую из разыменованной ссылки

Также можно использовать операторы разадресования :

#!/usr/bin/perl

use strict;
use warnings;

sub test { my @test = ("1", "2", "3", "4"); return \@test;};
my @ref = @{&test()};
print "$ref[1]";

Tags: , ,

установка модулей XML::LibXML и LWP::UserAgent в Windows 7

Posted in Новости on 17 июня, 2013 by admin

1. устанавливаем Active Perl
2. Пуске — выполнить — ppm
3. Находим нужные модули, помечаем для установки и устанавливаем через Ctrl + Enter

Tags: , ,

perl SSL verify failed LWP::UserAgent Windows 7

Posted in Новости on 17 июня, 2013 by admin

Чтобы отключить ошибку требуется в файле :

C:\Perl\lib\LWP\Protocol\https.pm

сменить :

$ssl_opts{SSL_verify_mode} ||= 1;

на :

$ssl_opts{SSL_verify_mode} ||= 0;

Tags: ,

Массовое восстановление хардлинков логов у пользователей ISPmanager

Posted in Новости on 5 марта, 2013 by admin


perl -e 'my $USER="TRESNET";my @DOM=`ls /var/www/$USER/data/www`; chomp @DOM; foreach (@DOM) { system("ln /var/www/httpd-logs/$_.access.log /var/www/$USER/data/logs/$_.access.log && ln /var/www/httpd-logs/$_.error.log /var/www/$USER/data/logs/$_.error.log"); }'

Соответственно в переменную USER нужно вставлять требуемого пользователя.

Tags: ,

Как сгенерировать определенное количество файлов определенного размера в Linux

Posted in Новости on 6 февраля, 2013 by admin

Требуется создать 1000 файлов по 70Kb :

perl -e 'system("dd if=/dev/zero of=70kb bs=70K count=1"); my @aa = `seq 1000`; foreach (@aa) { system("cp 70kb 70kb-$_";) }'

Tags: ,