🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #4231

Re: variabele filehandles in perl

#4231
From: Gunter Schelfhout
Date: Sun, 07 Sep 2003 03:15
49 lines
2378 bytes
Robby De Smedt wrote:

> Voor een perlscript moet ik 10 bestanden aanpassen die vogende
> uitdrukkinkg hebben:
> naam_1
> naam_2
> ...
> naam_9
> 
> Wegens de simpele naamgeving open ik deze met volgende uitdrukking:
> 
> for (my $i=0; $i<=9; $i++){
>                 open (naam_.$i, ">>naam_$i") or die "can't open naam_$i ";
> }
> 
> Als ik nu de bestanden begin te beschrijven met een print opdracht:
> 
> print naam_.$j "$variabele\n";

'.' is de concat-operator. Ik vermoed dat Perl hier 'naam_' en $i beschouwd
als strings die hij moet printen, vanwege '.'.

Verder is het feit dat je de filehandle na de for-loop aanspreekt met
naam_.$i, terwijl $i IN de for-loop een lexical variable was. Maw, gaat uit
scope na het einde van de for-loop.

Probeer eens met:
my @filehandles = ();
my @files = ();
for (my $i=0; $i<=9; $i++) {
        my $handle = FH{$i};
        my $file = "naam_" . $i
        push @filehandles, $handle;
        push @files, $file;
        open($handle, ">>$file") or die "Cannot open file $file: $!";
}

Daarna kan je filehandle als volgt gebruiken:
select($filehandles[3]);
print "String to print";

of voor alle handles tegelijk:

foreach my $handle (@filehandles) {
        print $handle "String to print";
}

-- 
Blood, sweat & tears
Technical Details
Message-ID: <Zox6b.5911$D_4.226430@phobos.telenet-ops.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!news.maxwell.syr.edu!kibo.news.demon.net!demon!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!phobos.telenet-ops.be.POSTED!not-for-mail
References: <pan.2003.09.06.23.13.38.305183@nospam.pandora.be.invalid>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,eea4ecbd77d046a1
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-09-06 20:15:07 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!news.maxwell.syr.edu!kibo.news.demon.net!demon!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!phobos.telenet-ops.be.POSTED!not-for-mail
From: Gunter Schelfhout <nospam@please.com>
Subject: Re: variabele filehandles in perl
Newsgroups: be.comp.programming
References: <pan.2003.09.06.23.13.38.305183@nospam.pandora.be.invalid>
Lines: 49
User-Agent: KNode/0.7.2
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7Bit
Message-ID: <Zox6b.5911$D_4.226430@phobos.telenet-ops.be>
Date: Sun, 07 Sep 2003 03:15:05 GMT
NNTP-Posting-Host: 213.118.155.28
X-Complaints-To: abuse@telenet.be
X-Trace: phobos.telenet-ops.be 1062904505 213.118.155.28 (Sun, 07 Sep 2003 05:15:05 MEST)
NNTP-Posting-Date: Sun, 07 Sep 2003 05:15:05 MEST
Organization: Telenet Internet