Schrift
[thread]11126[/thread]

Filehandler mit oder ohne '$'

Leser: 1


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Hagen
 2008-01-10 20:59
#104579 #104579
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Hallo,

bisher habe beim Arbeiten mit Dateien immer das folgendes Schema benutzt (bzw. so ähnlich):

Code (perl): (dl )
1
2
3
4
5
6
7
#!/usr/bin/perl

open(datei, "<test.txt") || die "Datei wurde nicht gefunden\n";
while(<datei>) {
   print $_;
   }
close(datei);


Jetzt ist es zufällig vorgekommen, dass ich nacheinander zwei Dateien in unterschiedlichen Routinen mit dem gleichen Filehandler ('datei') geöffnet und danach eine geschlossen haben und eigentlich in der zweite noch weiter lesen wollte. Diese war natürlich nicht mehr möglich.

Da in fast allen Code-Stücken die ich im Internet gefunden habe der Filehanderl so genutzt wurde, habe ich mir bisher dazu keine Gedanken gemacht ... u.a. weil es bisher funktioniert hat.


Kann man den Filehandler wie z.B. Variablen mit my auf eine Routine begrenzen. '$datei' scheint anstelle von 'datei' auch zu funktionieren.

Kann mir jemand den Unterschied bzw. die Vor- und Nachteile erklären?
Gruß
Hagen
pq
 2008-01-10 21:54
#104583 #104583
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
jo, hab ich schonmal gemacht und dann im
wiki gespeichert, damit ich es nicht nochmal aufschreiben muss:
Wiki:WasIsteinLexikalischerFileHandle
fazit: $fh ist meistens vorzuziehen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Hagen
 2008-01-10 22:05
#104587 #104587
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Danke für die Antwort. Muss wohl nach der falschen Vokabel gesucht oder es übersehen haben.

Aber schon interessant, dass so häufig der ' Klassische Filehandles' genutzt wird ...
Gruß
Hagen
pq
 2008-01-10 22:15
#104592 #104592
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Hagen+2008-01-10 21:05:53--
Aber schon interessant, dass so häufig der ' Klassische Filehandles' genutzt wird ...

es ist halt viel alter perl code da draussen =)
und alte skripte, die funktionieren, muss man deswegen nicht extra umschreiben.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
sid burn
 2008-01-11 00:53
#104598 #104598
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
pq+2008-01-10 20:54:55--
fazit: $fh ist meistens vorzuziehen.

Wann ist es den nicht vorzuziehen?
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2008-01-11 08:36
#104606 #104606
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bei alten Perls, die das nicht unterstützen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
sid burn
 2008-01-11 10:05
#104608 #104608
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
renee+2008-01-11 07:36:33--
Bei alten Perls, die das nicht unterstützen...

Dann ist die alte Syntax nicht vorzuziehen sondern man hat gar keine andere Wahl.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
Strat
 2008-01-11 11:45
#104614 #104614
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ein weiterer grund ist, dass man zwar einen tie auf FH legen kann, aber nicht so einfach einen auf $FH (weil es sonst ein skalarer Tie und kein Filehandle-Tie wird)... aber sowas braucht man wohl aeusserst selten.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
murphy
 2008-01-11 12:27
#104616 #104616
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
renee+2008-01-11 07:36:33--
Bei alten Perls, die das nicht unterstützen...


In einer Subroutine sollte man dann aber besser local *FH; open FH ... verwenden um genau das vom OP beschriebene Problem zu umgehen.
When C++ is your hammer, every problem looks like your thumb.
Crian
 2008-01-11 15:44
#104621 #104621
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
pq+2008-01-10 20:54:55--
Wiki:WasIsteinLexikalischerFileHandle


schön geschrieben
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2008-01-10 20:59.