Schrift
[thread]6715[/thread]

Testen, ob referenz blessed ist (Seite 2)



<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten
sri
 2005-02-17 17:04
#51837 #51837
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=ptk,17.02.2005, 14:38]Die richtige Antwort ist use Scalar::Util qw(blessed)[/quote]

UPDATE: Wie mir Taulmarill eben zeigte gibt B::class() bei referenzen genau wie ref() den datentyp zurueck (warum auch immer), es ist also nicht geeignet objekte zu erkennen!!!
Bleibt der dierekte weg ueber B::sv_2object oder eben der haessliche hack in Scalar::Util::blessed().\n\n

<!--EDIT|sri|1108654943-->
Taulmarill
 2005-02-17 18:21
#51838 #51838
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
ich hab hier noch nen bischen was lustiges gehackt, evtl. hilft dir das ja:
Code: (dl )
1
2
3
4
5
6
my $self = {};
print "\$self ist ein Objekt von $1\n" if ref $self && $self =~ /([^=]*)=/;

bless $self, "Foo::Bar";

print "\$self ist ein Objekt von $1\n" if ref $self && $self =~ /([^=]*)=/;
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Taulmarill
 2005-02-17 18:33
#51839 #51839
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
ok, ich hab's gefunden. in perlobj findet man bei der Beschreibung von UNIVERSAL folgendes:
Quote
To determine if a reference is a blessed object, you can write
Code: (dl )
print "It's an object\n" if UNIVERSAL::isa($val, 'UNIVERSAL');
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
ptk
 2005-02-17 18:39
#51840 #51840
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=Taulmarill,17.02.2005, 15:05][quote=ptk,17.02.2005, 14:38]Die richtige Antwort ist use Scalar::Util qw(blessed)[/quote]
das ist eine und nicht die richtige antwort.
remember TIMTOWTDI[/quote]
Sagen wir es so: manche Antworten sind gleicher als andere Antworten :-) Die Verwendung von Standard-Modulen oder von nicht obskuren Funktionen ist bestimmt bevorzugt.
Taulmarill
 2005-02-17 18:43
#51841 #51841
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
[quote=ptk,17.02.2005, 17:39]Sagen wir es so: manche Antworten sind gleicher als andere Antworten :-) Die Verwendung von Standard-Modulen oder von nicht obskuren Funktionen ist bestimmt bevorzugt.[/quote]
ich bevorzuge vernünftige implementationen. wenn eine funktion nun, sagen wir "verbesserungsfähig" implementiert ist, dann bevorzuge ich meine eigene lösung, fals diese sauberer ist.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
esskar
 2005-02-17 18:50
#51842 #51842
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Taulmarill,17.02.2005, 17:33]ok, ich hab's gefunden. in perlobj findet man bei der Beschreibung von UNIVERSAL folgendes:
Quote
To determine if a reference is a blessed object, you can write
Code: (dl )
print "It's an object\n" if UNIVERSAL::isa($val, 'UNIVERSAL');
[/quote]
das sieht doch toll aus.
danke für die hilfe (dank geht natürlich an alle)!
esskar
 2005-02-17 18:50
#51843 #51843
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=sri,17.02.2005, 16:04]UPDATE: Wie mir Taulmarill eben zeigte gibt B::class() bei referenzen genau wie ref() den datentyp zurueck (warum auch immer), es ist also nicht geeignet objekte zu erkennen!!![/quote]
jup... da bin ich eben auch gegen gelaufen!
sri
 2005-02-17 18:50
#51844 #51844
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=ptk,17.02.2005, 17:39][quote=Taulmarill,17.02.2005, 15:05][quote=ptk,17.02.2005, 14:38]Die richtige Antwort ist use Scalar::Util qw(blessed)[/quote]
das ist eine und nicht die richtige antwort.
remember TIMTOWTDI[/quote]
Sagen wir es so: manche Antworten sind gleicher als andere Antworten :-) Die Verwendung von Standard-Modulen oder von nicht obskuren Funktionen ist bestimmt bevorzugt.[/quote]
Code: (dl )
print "It's an object\n" if UNIVERSAL::isa($val, 'UNIVERSAL');

ist clever, und IMHO bedeutend besser als Scalar::Util::blessed()...
coax
 2005-02-17 21:21
#51845 #51845
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Die Loesungen sind 'n Eintrag ins Wiki wert!
,,Das perlt aber heute wieder...'' -- Dittsche
renee
 2005-02-18 09:41
#51846 #51846
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann mach mal ;) @coax
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten



View all threads created 2005-02-17 01:02.