perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 22
Click for quality!




11.02.2012 / 08:06

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragverstaendniss fragen
Seitenanfang
hi

mal ein paar fragen zum besser verstehen.

1.
wenn ich ein hash an z.b. an einen sub
uebergebe kann ich diesen ja per shift an eine locaten
hash uwebergeben/zuweisen.

wenn ich nun mehrere hashes habe mache ich zz. so
das ich pro haesh einen shift machen.

z.b.

sub tralla {
my $a= shift;
my $b= shift;
my $c= shift;
}

gibt es da eine elegantere meoglichkeit ?

2.
wenn ich per commando zeile parameter ueber gebe
landen die ja im argv .

zz mache ich das so .


if (($#ARGV < 0 ) or ( $#ARGV > 3 )) {
print "$msg{'wrong_no_arg'} $msg{'help'}\n" ;
exit ;
} elsif ( $#ARGV == 0 ) {
$ACTION = shift; # create , edit ,list, del, new , help, reload
} elsif ( $#ARGV == 1 ) {
$ACTION = shift; # create , edit ,list, del, new , help, reload
$TYPE = shift; # table oder rules
} elsif ( $#ARGV == 2 ) {
$ACTION = shift; # create , edit ,list, del, new , help, reload
$TYPE = shift; # table oder rules
$FILE = shift; # filename fuer tablenname oder fuer datei erstellen
} elsif ( $#ARGV == 3 ) {
$ACTION = shift; # create , edit ,list, del, new , help, reload
$TYPE = shift; # table oder rules
$FILE = shift; # filename fuer tablenname oder fuer datei erstellen
$OPT1 = shift; # frei
}

auch hier kann man das eleganter loesen ?

3.

mal allgemein .

ist eine referenz sowas wie ein alias unter unix fs ?

mir erschliesst sich noch nicht so wirklich der sin und zweck einer referenz.

holger

Datum: 15.02.2008-11:27

Beitragre: verstaendniss fragen
Seitenanfang
zu erstens...

my($a,$b,$c) = @_;
oder
my @werte = @_;

wäre eine Variante...
eine zweite wäre es , statt eines Arrays oder Hashes eine Referenz zu übergeben. Also statt &tralla(%daten); schreibst du &tralla(\%daten);
Resultat :
in sub tralla kannst du den hash wieder dereferenzieren

sub tralla {
$hashref = shift;
%originalhash = %{$hashref};

zu zweitens...
while($tmp = shift){ push(@args,$tmp); };
wäre eine Variante... so hättest du alle Parameter in einem Array und kannst leichter drauf zu greifen.

zu drittens:

http://www.perlunity.de/sid915137220545/perl/tutorial/references.shtml

Ja - referenzen sind sowas ähnliches wie der Alias im Unix FS - Sinn der Sache ist es, Speicherschonend Objekte übergeben, da man keine Kopie der Daten anlegt sondern direkt darauf verweist. Ein Anwendungsbeispiel hast du selber genannt unter deiner ersten Frage.

Datum: 15.02.2008-14:28

-






-
-