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

Typen in Perl

Leser: 2


<< >> 4 Einträge, 1 Seite
kabel
 2003-08-18 13:46
#60645 #60645
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
fortsetzung dieses threads

Crian:
Quote
Naja, Typen sind eigentlich sowas wie integer, char, word, ... sowas ist in Perl alles im "Skalar".


das sind die C typen. aber was ist z.b. damit:
Code: (dl )
1
2
3
4
5
6
typedef struct _TAG_SCALAR {
int value;
char *string;
void *reference;
bitmask_t valid_entries;
} SCALAR, *PSCALAR;


danach ist - sofern der code keine syntaxfehler enthält - SCALAR ein gülitger typ und PSCALAR ein "zeigertyp". mit den richtigen operationen kannst du ein perl-skalar in C "nachbauen" (naja :) ) - das ganze unterliegt natürlich der syntax von C, aber wozu gibts den makros :p ;)

$kabel->get ($schlaues_buch)->search_knowledge_about ("types")->post_here_after_a_while ();
-- stefan
Crian
 2003-08-18 14:05
#60646 #60646
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
:)
Wahrscheinlich hat Perl so angefangen, als immer weiter wachsende C-Makro-Sammung *g
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
SirLant
 2003-08-18 15:44
#60647 #60647
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Mal ne ganz doofe Frage am Rande was sind denn makros?Kenn die nur aus Office-Anwendungen
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
kabel
 2003-08-18 17:05
#60648 #60648
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
makros sind ersetzungsfunktionen. zuerst werden sie definiert, und dann verwendet. z.b.
Code: (dl )
1
2
3
4
#define SQUARE(x) ((x)^2)
int y=12;
/*später */
printf ("das quadrat von %d ist %d\n", x, SQUARE(y));

das ist wirklich nur eine textersetzung, d.h. der code ist äquivalent zu
Code: (dl )
1
2
int y=12;
printf ("das quadrat von %d ist %d\n", x, ((y)^2));

beachte die klammern! da es nur eine textersetzung ist, kann folgendes passieren:
Code: (dl )
1
2
#define FN(x,y) x^y
FN(1+1, 1+1);

wird zu
Code: (dl )
1+1^1+1
, was falsch ist!

das äquivalent dazu in perl sind sog. Source Filter. <!--cpan1--><a href="http://search.cpan.org/search?query=%22Filter::Sim..." target="_blank">CPAN: <!--cpan2--><!--cpan3--></a><!--cpan4-->Filter::Simple

makroprozessoren gibts übrigens einige, bekannter ist z.b. M4, der z.b. für die sendmail-config benutzt wird.
der von C benutzte heisst C PreProcessor, oder CPP (von richard stallman)

es gibt noch andere, "bessere" makros, die erklärt dir aber besser jemand anders :g:

HTH
-- stefan
<< >> 4 Einträge, 1 Seite



View all threads created 2003-08-18 13:46.