спасибо, только чото не пойму - нет ретурна, что такое %res = (); и какую функцию несет Но это то, что надо, так или иначе!!!! Сенкс большое
%res = (); - это пустой хэш ) Ретурны я убрал, т.к. хэш расшаренный и возвращать как бы ничего не надо. А вот пример без использования шарного хэша и с ретурнами Code: #!/usr/bin/perl use threads; use threads::shared; my $n : shared; $a = gets(); print $_, ' => ', $a->{$_}, "\n" for sort {$a <=> $b} keys %$a; #print $a . "\n"; sub gets { $thr = 10; $n = 0; %res = (); for(0..$thr) { $trl[$_] = threads->create(\&gets1); } for(0..$thr) { #$res[$_] = $trl[$_]->join; %res = (%res, %{$trl[$_]->join}); #print $n, "\n"; } sub gets1 { $| = 1; $ii = ""; while ($n < 10) { { lock($n); $n++; } $ii .= $n; $hash{$n} = $ii; #print $ii . "\n"; } #print $ii, "\n"; return \%hash } return \%res; }
Великолепно! Оба варианта рабочие. Чем один лучше или хуже другого? Шара больше памяти жрет при большом потоке или ...?
PHP: my @fuck = (1..10); my @s = (18,19); sub shit { my(@x,@y) = @_; print @x."\r\n"; print @y."\r\n"; } shit(@fuck,@s); system("PAUSE"); Выводит 12,0.Хотел вывести значения обоих массивов...
хмм,запись заработала,а вот чтение хромает: open(b,"<s.txt"); print b STDOUT; # по всякому уже))разве что в другой фаил копирнуть могу,но на #консольку хотел close(b);
Code: #!/usr/bin/perl use strict; use warnings; $\ = "\n"; my @fuck = (1..10); my @s = (18,19); sub shit { my ($x, $y) = @_; print join ', ', @$x; print join ', ', @$y; } shit (\@fuck, \@s);
Подскажите как осуществлять поиск не в переменной $_ ?Допустим я открыл дескриптор файла, поместил содержимое файла в массив затем его преобразовал в строку и уже в этой строке как осуществить поиск?Постоянно присваивать переменной $_ ??? А если искать не в скаляре а в массиве?Так можно?)) Уже разобрался только не получается замена слова в текстовом файле(((( Code: #!/usr/bin/Perl -w open (FILE,">>text.txt")||die "error $!"; @filetxt=<FILE>; $file=join ('',@filetxt);chomp $file; $file=~s/.*are.*/was/; print FILE $file; close(FILE); В чем тут проблема???
Попробуй так PHP: open(F, "<file.txt") || die $!; undef $/; my $file = <F>; close F; $file =~ s/.*are.*/was/; open(F, ">file.txt") || die $!; print F $file; close F;
C:\>perl -e " for (1..5) { print 'X'.\"\r\n\" x 2; } " X X X X X Как сделать так,чтобы перл в ряды всё это в колонки выводил ?) Такой ощущение,что оператор х игнорируется,потому,что если убрать \r\n,то работает,но всё в однц строчку пишет соответственно.
Если непонятно: оператор my() (системная функция) объявляет переменную и устанавливает её в лексической области видимости. Лексическая область видимости - это временная память,куда сохраняются имена переменных.Значения же переменных обычно сохраняются в стеках. В общем,переменные лексической области видимости называют в других языках программирования как локальные,но,в отличие от других языков, в PERL пакетные переменные(глобальные) и локальные(пеерменные лексической области видимости) не конфликтуют между собой хотя бы из-за лексемы Code: :: ЗЫ: Знаю,что наговорил много лишнего,но тем не менее...
Всмысле какой ? в STDOUT(на экран).Просто использовние perl -e меня меньше напрягает,чем открывать закрывать фаил...это что-то вроде теста.