#!/usr/bin/env perl
use strict;
use warnings;
use threads;
use threads::shared;
# Создаём расшареную переменную
my @numbers:shared = (1..100);
# Задаём количество потоков
my $threads = shift || 10;
# Создаём потоки и кладём их обекты в массив
my @threads;
for (1..$threads) {
push @threads, threads->new(
sub {
while (@numbers) {
# Достаём данные из массива
# Предварительно заблокировава его для остальных потоков
my $number;
{
# Блокировка работает только в этом скоупе
lock(@numbers);
$number = shift(@numbers);
}
print 'Result: '.($number*10)."\n";
}
}
);
}
# Запускаем потоки привязав их к основному процессу
$_->join for (@threads);
#!/usr/bin/env perl
use strict;
use warnings;
use threads;
use threads::shared;
# Создаём расшареную переменную
my @numbers:shared = (1..100);
# Задаём количество потоков
my $threads = shift || 10;
# Создаём потоки и кладём их обекты в массив
my @threads;
for (1..$threads) {
push @threads, threads->new(
sub {
while (@numbers) {
# Достаём данные из массива
# Предварительно заблокировава его для остальных потоков
my $number;
{
# Блокировка работает только в этом скоупе
lock(@numbers);
$number = shift(@numbers);
}
print 'Result: '.($number*10)."\n";
}
}
);
}
# Запускаем потоки привязав их к основному процессу
$_->join for (@threads);
#!/usr/bin/env perl
# Включаем варнинги и ужесточение синтаксиса
use strict;
use warnings;
# Включаем библиотеку для работы с http
use LWP::Simple;
# Качаем страницу, если не удалось пркращаем работу
my $page = get('http://2ip.ru/') or die "Can't get page!";
# Парсим IP ргуляркой если не удалось прекращаем работу
my ($ip) = ($page =~ m!(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})!) or die "Can't pars IP!";
# Выводим IP
print 'You IP: '.$ip."\n";