Globale und lokale Variablen definieren
Stefan
- perl
Hallo zusammen,
ist es syntaktisch richtig, wenn ich globale Variablen mit our und lokale Variablen mit my definiere?
#!/usr/bin/perl -w
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
our ($gVar1,gVar1);
sub test
{
# lokale Variablen...
my ($lVar1,lVar1);
}
Wie definiere ich denn einen Filezeiger global und lokal?
open(FILE, "...");
Mit our *FILE und my *FILE bekomme ich einen Fehler.
Danke im voraus.
Hi,
ist es syntaktisch richtig, wenn ich globale Variablen mit our und lokale Variablen mit my definiere?
ja!
Wie definiere ich denn einen Filezeiger global und lokal?
open ({my,our} $FILE, "...") or die $!;
hi Erwin,
danke dir vielmals!
bye
Stefan
Hi Erwin,
open ({my,our} $FILE, "...") or die $!;
open(my $FILE, "$gFile") || die("can't read $gFile, $!");
Wenn ich das so definiere, gehen leider die Dateifunktionen nicht.
FILE muss doch die Adresse des Filezeigers haben, dann kann man doch auch nicht my $FILE schreiben.
Hallo Stefan,
open ({my,our} $FILE, "...") or die $!;
open(my $FILE, "$gFile") || die("can't read $gFile, $!");
Wenn ich das so definiere, gehen leider die Dateifunktionen nicht.
FILE muss doch die Adresse des Filezeigers haben, dann kann man doch auch nicht my $FILE schreiben.
Die Verzeichnis- und Dateihandles von Perl sind keine richtigen Variablen. Sie haben so eine Art Sonderstatus.
Ich würde dir raten, das Perl-Modul IO::File einzubinden. Das stellt Dateihandles als Objekte zur Verfügung.
Die kannst du dann wie gewöhnliche Variablen verwenden -- also auch mit "my" oder "our". Auch die Übergabe als
Parameter für Subroutinen ist damit möglich.
Die Benutzung ist relativ unkompliziert, es lassen sich alle üblichen Ein- und Ausgabeoperationen von Perl
auf diese Filehandles anwenden, und das Modul ist gut dokumentiert:
use IO::File;
# Filehandle initialisieren
$fh = new IO::File;
# Datei öffnen, anzeigen und schließen
if ($fh->open("< file")) {
print <$fh>;
$fh->close;
}
$fh = new IO::File "> file";
if (defined $fh) {
# in Datei schreiben
print $fh "bar\n";
$fh->close;
}
MffG
EisFuX
Hi EisFuX,
danke dir !
Werde es gleich mal testen....
Wie definiere ich denn einen Filezeiger global und lokal?
global sind sie von Hause aus, lokal definierst du sie mit local oder auch gensym aus dem Modul symbol
Struppi.