Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7756[/thread]

funktionsweise von ref()



<< >> 4 Einträge, 1 Seite
Froschpopo
 2006-03-03 00:24
#63423 #63423
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
wie funktioniert eigentlich ref() ? Woher weiss die funktion, was eine ref ist?
Irgendwie muss die Funktion ja unterscheiden.
Die variable könnte ja zufällig auch den wert einer ref haben und könnte deshalb dann wahr rückgeben, oder nicht?

Ich habe nämlich eine Liste mit Speicheradressen die ich u.a. durch eine refernzprüfung gelangen. Allerdings handelt sich sich hierbei nicht um refs, sondern lediglich um die speicherorte solcher, also derselbe name.
Strat
 2006-03-03 00:56
#63424 #63424
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
perl merkt sich, auf was fuer eine art von referenz eine variable zeigt.

wie kommst du durch eine referenzpruefung (also mit ref()) an speicheradressen? oder machst du einfach
Code: (dl )
$x = "$xRef"; ?

dann findest du den unterschied nicht heraus, sondern nur z.B. mit ref()

siehe auch perldoc Scalar::Util -> blessed, um herauszufinden, ob die referenz ein Objekt ist
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
murphy
 2006-03-03 01:05
#63425 #63425
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ich glaube ich verstehe Deine Frage nicht ganz. Wenn eine Skalarvariable "zufällig" eine Referenz auf ein anderes Datenobjekt enthält, dann ist sie wohl oder übel eine Referenz. Wenn man in eine Variable einfach einen Stash schreibt, dann ist sie ein String. Wo soll da das Problem sein?

Wenn du wissen willst ob ref das tut, was du haben willst, probiere es doch einfach aus. Oder lies den Quellcode von Perl. Ich nehme mal an, dass ref die Flags eines Skalares analysiert um herauszufinden, ob es ein PV, IV, NV oder eben ein RV ist. Gib mal perldoc perlguts ein und suche nach SvROK und SvTYPE, da steht ein wenig mehr über das C-Interface zu Referenzen in Skalaren.
When C++ is your hammer, every problem looks like your thumb.
ptk
 2006-03-03 11:09
#63426 #63426
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Man kann auch Dump() aus Devel::Peek verwenden, um sich die Interna eines Skalars anzuschauen.
<< >> 4 Einträge, 1 Seite



View all threads created 2006-03-03 00:24.