Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]412[/thread]

Filehandler als Parameter an Subroutine übergeben



<< >> 5 Einträge, 1 Seite
beany
 2005-01-21 02:04
#4186 #4186
User since
2003-09-11
2 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
open(FH, ">$file") or die $!;
&lock(FH,2);
print FH $text;
&lock(FH,8);
close(FH);

sub lock{
flock($_[0],$_[1]);
}


Kann mir bitte jemand sagen, wie ich es richtig mache?
Mit Asterik: &lock(*FH,2) vielleicht?
format_c
 2005-01-21 08:55
#4187 #4187
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ja, jedoch musst du das Filehandle wieder als solches herauslösen.
Code: (dl )
1
2
3
4
5
6
7
8
9
use strict;
sub test {
local *FH = shift;
while (<FH>) {print;}
}

open FILE,'<',$0 or die $!;
test(*FILE);
close FILE;


Gruß Alex
beany
 2005-01-21 13:12
#4188 #4188
User since
2003-09-11
2 Artikel
BenutzerIn
[default_avatar]
Danke für die schnelle Antwort!
Strat
 2005-01-21 19:44
#4189 #4189
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
nebenbei: bei flock die werte, die das betriebssystem erwartet, direkt zu uebergeben kann unter einem anderen betriebssystem fehlschlagen, wenn dort andere werte vorkommen... um sowas sicherer zu machen bietet fcntl dafuer Konstanten an, die ans jeweilige OS angepasst sind..
Code: (dl )
1
2
3
use Fcntl ':flock';
flock(FH, LOCK_EX);
flock(FH, LOCK_UN);

etc.
das steht aber auch alles in perldoc -f flock drinnen...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
betterworld
 2005-01-21 22:30
#4190 #4190
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Hallo,
so geht es auch:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
use warnings;

sub lock(*$){
flock($_[0],$_[1]);
}

my $file="foo";
my $text="hallo";
open(FH, ">$file") or die $!;
lock (FH,2);
print FH $text;
lock FH, 8;
close(FH);
<< >> 5 Einträge, 1 Seite



View all threads created 2005-01-21 02:04.