Thread Vergleiche mit 0, PHP gegen Perl und anderes... (71 answers)
Opened by rosti at 2012-12-29 13:07

renee
 2012-12-30 15:53
#164520 #164520
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
2012-12-30T13:56:11 rosti
Mit String-Vergleichsoperatoren möchte mein Perl nun auch den String in 0E0 erkennen,
Genau deswegen gibt es ja *String*-Operatoren und *Numerische*-Operatoren ;-)



BTW: Wer andere Leute mit seinem Code verwirren möchte, kann noch dualvar aus CPAN:Scalar::Util verwenden:

Code: (dl )
1
2
3
$foo = dualvar 10, "Hello";
$num = $foo + 2; # 12
$str = $foo . " world"; # Hello world


Dass Skalare verschieden Slots haben, zeigt auch
Code: (dl )
1
2
3
4
5
6
7
8
9
$ perl -MDevel::Peek -e 'my $var = 8.4; $var = "test"; $var = 3; Dump $var'
SV = PVNV(0x1293080) at 0x12b0a48
REFCNT = 1
FLAGS = (PADMY,IOK,pIOK)
IV = 3
NV = 8.4
PV = 0x12ab050 "test"\0
CUR = 4
LEN = 8


Es gibt einen Slot für die Pointer (Hier der String), einen für Integervalues, und einen für Numeric Values. Welcher Slot für die numerischen Operatoren herangezogen wird, hängt von den Flags ab.

Bei "IOK" wird der IV-Wert genommen, bei "POK" der PV-Wert,...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ perl -MDevel::Peek -le 'my $var = 8.4; $var = "test"; $var = 3; Dump $var; print $var + 3'
SV = PVNV(0x1069080) at 0x1086a30
REFCNT = 1
FLAGS = (PADMY,IOK,pIOK)
IV = 3
NV = 8.4
PV = 0x2357070 "test"\0
6
$ perl -MDevel::Peek -le 'my $var = 8; $var = "test"; $var = 3.1; Dump $var; print $var + 3'
SV = PVNV(0x9f3080) at 0xa10a30
REFCNT = 1
FLAGS = (PADMY,NOK,pNOK)
IV = 0
NV = 3.1
PV = 0x2357070 "test"\0
6.1
$ perl -MDevel::Peek -le 'my $var = 8; $var = "test"; Dump $var; print $var + 3'
SV = PVIV(0x2352080) at 0x235ca20
REFCNT = 1
FLAGS = (PADMY,POK,pPOK)
IV = 8
PV = 0x2357070 "test"\0
CUR = 4
LEN = 8
3


<Werbung>Mehr zu Typeglobs gibts in den $foo Ausgaben 7-9</Werbung>

Edit: Hinweis, dass dualvar aus Scalar::Util kommt vergessen, jetzt eingefügt
Last edited: 2012-12-30 15:55:41 +0100 (CET)
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/

View full thread Vergleiche mit 0, PHP gegen Perl und anderes...