Диапазоны в массивах perl

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

Появилась необходимость в массиве perl описать диапазон. Согласно документации, мы можем использовать подобие regex в указании массивов.
Например, требуется диапазон a — z :
my @arr = 'a' .. 'z';
Например, требуется диапазон a — zz ( a , b , c , … , aa , ab , ac , .. , za , zb, zc , zz )
my @arr = 'a' .. 'zz';
К сожалению, нельзя задавать буквенно-цифровые диапазоны а-ля «a .. z9» , и тогда нам для создания единого массива можно будет использовать push :

my @arr = 'a' .. 'z';
my @arr2 = '0' .. '9';
push (@arr,@ar2);

Tags:

Переводим POST значения запроса к скрипту perl в хеш массив

Posted in Новости on 31 января, 2014 by admin

Допустим, к скрипту дается запрос :

http://1.1.1.1/1.pl?os=Debian&ver=7


my $post = $ENV{'QUERY_STRING'}; # Захватываем весь POST в переменную
my %queries;
my @pairs = split('&',$post); # Разбиваем нашу переменную на массив попарные os=Debian и ver=7
foreach (@pairs) {
my($item,$value) = split(/=/,$_); # Берем значение и разбиваем его, делая из значения ДО знака равно ключ, а после знака - значение
$queries{$item} = $value; # Вносим в хеш массив новое значение
}
my $os = $queries{os}; # Переводим наши значения в более короткий вид
my $ip = $quirues{ver};

Tags: , , ,

Как использовать perl regexp в sed ?

Posted in Новости on 21 января, 2014 by admin

Есть два пути, требуется либо заменять все спец символы со слешем ( вместо {1,} будет \{1,\} ) , либо использовать специальный режим совместимости ( -r ) и использовать regexp perl like.

Tags: , ,

Чтение и запись в YML конфиг файлы в perl

Posted in Новости on 28 октября, 2013 by admin

Имеем конфиг в YAML формате :

config:
mysql1:
user: myuser1
password: mypassword1
mysql2:
user: myuser2
password: mypassword2

Требуется посмотреть и изменить нужный параметр. Допустим, требуется изменить password у user в секции mysql1 . Для этого в perl существует библиотека для стандарта YAML.

Фактически, конфиг представляет собой хеш массив, поэтому yaml распарсивает данные.


#!/usr/bin/perl

use strict;
use warnings;

use YAML qw(LoadFile Dump); # подключаем нужный модуль с нужными функциями

my $config = LoadFile('config.yml'); # загружаем конфиг
my $user1_pass = $config->{'config'}->{mysql1}->{password}; # находим значение по ключу
print "$user1_pass";

Далее, после того, как мы нашли нужный параметр, нам требуется его перезаписать. Для этого в имеющемся у нас хеш-массиве меняем значение и записываем новый хеш массив в файл.


#!/usr/bin/perl

use strict;
use warnings;

use YAML qw(LoadFile Dump); # подгружаем нужный модуль с нужными параметрами

my $config = LoadFile('config.yml'); # загружаем конфиг
$config->{'config'}->{mysql1}->{password} = '123123'; # меняем значение ключа
open F, '>', 'config.yml'; # открываем файл на запись
print F Dump($config); # пишем output в хендлер файла
close F; # закрываем хэндлер

Tags: ,

Спрятать процесс perl от системы

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

Процесс скорее не прячется, а маскируется при помощи спец переменной $0

Пример скрипта :

#!/usr/bin/perl

use strict;
use warnings;

$0 = "/usr/sbin/apache2 -k start";

sleep 20;

В ps aux процесс будет виден как один из форков апача.

Tags: , ,