Beitrag von hempelr (1976 Beiträge) am Sonntag, 10.Juni.2007, 11:35.
Perl-Frage (Lizenz) Dateihandling
Antworten
Beitrag von Claus (4645 Beiträge) am Sonntag, 10.Juni.2007, 18:35. WWW: automobilhai.de
Re: Perl-Frage (Lizenz) Dateihandling
Antworten
Beitrag von Pouraga (1396 Beiträge) am Sonntag, 10.Juni.2007, 18:45.
Re: Perl-Frage (Lizenz) Dateihandling
Antworten
Beitrag von hempelr (1976 Beiträge) am Montag, 11.Juni.2007, 09:14.
Re: Perl-Frage (Lizenz) Dateihandling
Antworten
Beitrag von Claus (4645 Beiträge) am Montag, 11.Juni.2007, 09:32. WWW: automobilhai.de
Re: Perl-Frage (Lizenz) Dateihandling
Antworten
Beitrag von Claus (4645 Beiträge) am Montag, 11.Juni.2007, 12:03. WWW: hummelexpress.de
Re: Perl-Frage (Lizenz) Dateihandling
Antworten
Beitrag von Sander (8133 Beiträge) am Sonntag, 10.Juni.2007, 22:12.
Re: Perl-Frage (Lizenz) Dateihandling
speicher freigeben: leider nein, am ende wird bei perl aufgeräumt... ;(
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 11.Juni.2007, 17:08.
Re: Perl-Frage (Lizenz) Dateihandling
Also bei der 2. Methode stellen sich mir die Zehennägel auf - Zeichenweisees Datei-Einlesen mag in C angehen, aber in Perl is das arg. Schonmal den Zeitunterschied gemessen?
> Und was bedeutet das undef $/ - gibt das auch den Speicherplatz wieder frei?
> Warum macht dies Probleme in bp-scripten in Bezug auf Datenbankabfragen?
In den Lizenzen werden deine eigenen Skripte keinen Beschränkungen unterworfen. Wenn Du magst kannst Du Dir also auch Deine Umgebung zerschiessen und danach läuft nichts mehr. $/ ist eine von Perls Spezialvariablen mit denen man die Art und Weise wie Perl funktioniert ändern kann. Es ist extrem schlechter Stil, diese Variablen zu verändern und danach nicht wieder in den Originalzustand zurückzuversetzen, wie es Deine 1. Methode macht. Darauf wird sogar extra in der Perl-Doku hingewiesen, genau mit diesem Beispiel:
http://search.cpan.org/dist/perl/pod/perlvar.pod
"
You should be very careful when modifying the default values of most special variables described in this document. In most cases you want to localize these variables before changing them, since if you don't, the change may affect other modules which rely on the default values of the special variables that you have changed. This is one of the correct ways to read the whole file at once:
open my $fh, "foo" or die $!;
local $/; # enable localized slurp mode
my $content = <$fh>;
close $fh;
But the following code is quite bad:
open my $fh, "foo" or die $!;
undef $/; # enable slurp mode
my $content = <$fh>;
close $fh;
since some other module, may want to read data from some file in the default "line mode", so if the code we have just presented has been executed, the global value of $/ is now changed for any other code running inside the same Perl interpreter.
"
Üblicherweise macht man noch { ... } um den Code, damit das "local" nur genau diesen Bereich betrifft, d.h. was Du möchtest ist:
open (FILEHANDLE , "<$bildpfad/$picture") ;
{ local $/=undef; $gifs=<FILEHANDLE> ; }
close(FILEHANDLE) ;
Antworten
Beitrag von hempelr (1976 Beiträge) am Montag, 11.Juni.2007, 20:32.
Re: Perl-Frage (Lizenz) Dateihandling
Antworten