Thread Suchmaschine: PHP vs Perl (31 answers)
Opened by Danie at 2006-05-04 18:10

Strat
 2006-05-04 20:59
#28491 #28491
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
kurz gesagt: in perl steht immer das zeichen vorne dran, das dem datentyp entspricht, der zurueckgegeben wird, also

$ bei skalarem wert (string, zahl, referenz)
@ bei einem array (als ganzes oder unterliste)
% bei einem hash
& bei einer Subroutine (funktion oder prozedur)

z.B. ein Element einer Liste @array ist immer ein skalar, also $array[4] ist das 5. element (beginnt bei 0)

runde () klammern deuten immer auf eine liste hin oder eine gruppierung
eckige [] klammern auf ein array
geschwungene {} klammern auf einen hash oder einen anweisungsblock (je nachdem, ob sie nach einer variablen oder alleine stehen)

$var ist ein skalar (z.B. 20 oder "zeichenkette")
$var[2] ist ein element eines arrays mit namen @var
$var{key} ist der wert eines hashes mit namen %var, der zum schluessel 'key' gehoert.
&var($p1, $2) ist der aufruf einer subroutine mit namen var und die parameter $p1 und $p2 werden uebergeben.

komplett unleserlich sind meistens nur Regulaere Ausdruecke, aber auch da hat Perl (im gegensatz zu fast allen anderen sprachen) mittel, sie lesbar zu gestalten, z.B.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
if( $string =~ /
[+-]? # optional + oder -
(\d+) # gefolgt von einer oder mehreren ziffern (moegichst vielen), speichern in $1
\. # gefolgt von einem punkt
(\d+) # gefolgt von mehreren ziffern (moeglichst vielen), speichern in $2
/x ) {

print "$string enthaelt eine Kommazahl: $1.$2\n";

} # if

oder fuer spaeter mal:
Code: (dl )
1
2
3
4
5
use Regexp::Common;

if( $string =~ / ( $RE{num}{real} ) /x ) {
print "string enthaelt eine Kommazahl: $1\n";
}
\n\n

<!--EDIT|Strat|1146762407-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Suchmaschine: PHP vs Perl