[LinuxOB] Perl Problem

Martin Reimann mareimann at gmx.net
Sa Mai 15 18:32:02 CEST 2004


Nun ganz einfach:
Perl erkennt die Datentypen nur anhand des Vorzeichens,
bzw bei Referenzen aus dem Text in der Referenz um welchen Datentypen es
sich handelt. Es kennt praktisch nur Skalare und Listen von Skalaren.

wenn du jetzt sagst:
%daten = {
'name' => 'sven',
'nachname => 'borkert'}

@test ("name", "nachname");

funktion(%daten, @test); 

kommt in der funktion der nur der array @_ an:

@test = @_;
und der array inhalt sieht dann so aus:
@test = (name, borkert, nachname, sven, name, nachname);
und wenn du das versuchst zuerst einem hash und dann einem array zu
übergeben ist perl einfach total überfordert.
die funktion shift(@array) nimmt einfach nur den nächsten wert aus der
liste.

deswegen immer referenzieren, ist auch schneller:
$ref_hash = \%hash;
$ref_array = \@array;

und %hash = %$hash;
und %array = @$array.

Interessant sind auch Referenzen auf Funktionen:
$subroutine = \&subroutine;
$subroutine($paramerter)

;)
MfG 
Martin....
PS: War das jetzt nüchterner? Die Party war übrigens geil weil produktiv...






> Hi
> 
> On May 15, 2004, at 11:01 AM, Sven Borkert wrote:
> 
> > Du hast mich nicht falsch verstanden, du hast nur mein Programm 
> > komplett
> > umgeschrieben. Ist ja auch ok, aber warum tut meine Variante denn 
> > nicht?
> 
> Ich hab nur mal eben im 'Kochbuch' nachgesehen wie man Arrays und 
> Hashes an Unterprogramme uebergiebt. Um das auszutesten habe ich dann 
> das Script geschrieben. Deshalb sieht das anders aus als bei Dir. Ist 
> aber bis auf die Refferenz eigentlich das gleiche.
> 
> Sieh dir mal 'perldoc perlsub' an, und suche nach 'Pass by Reference'.
> 
> Ich bin auch nicht gerade eine 'grosse Leuchte' in Perl. Deshalb ist 
> mein erster Blick immer in's 'Kochbuch'. Kann ich jedem nur empfehlen.
> 
> Udo
> 
> 

-- 
NEU : GMX Internet.FreeDSL
Ab sofort DSL-Tarif ohne Grundgebühr: http://www.gmx.net/dsl




Mehr Informationen über die Mailingliste linux