Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2
use integer;int(), ceil() und floor()sprintf()hex() und oct()rand() und srand()Math::TrulyRandomMath::Random-DistributionenMath::BigIntMath::BigFloatMath::Complex
# Zahlenliterale:
$z1 = 3.14159265; $G = 6.672e-11; $c = 299_792_458;
chmod 0644, 'myfile'; $bighex = 0xffffffff;
# Numerische Operatoren:
$z1 <, <=, >, >=, ==, !=, <=> $z2; # numerischer Vergleich
$z1 +, -, *, /, **, % $z2 # Arithm. zweistellig
-$var, +$var, # Arithm. einstellig
$z1 +=, -=, *=, /=, **=, <<=, >>= $z2; # Zuweisende Operatoren
# Bitoperatoren
$z1 |, &, ^ $z2; # oder, und, xor
$z1 << 4, $z1 >> 3; # Links-, Rechtsshift
~$z1; # Bitweise invertieren
# Funktionen
abs, sin, cos, atan2, exp, log, sqrt # Eingebaute Funktion
# Weitere im POSIX-
# und Math::Trig-Modul
eval { print 5/$var, "\n" }; # $var==0 nicht mehr fatal
# Automatische String<->Zahlen-Konvertierungen
floor(), ceil(), sprintf(), int() # ab-, auf-, runden, trunc
hex(), oct() # Konvertierungsfunktionen
# Zufallszahlengeneratoren
rand(), srand() # Nicht so gut, Standard.
use Math::TrulyRandom; # fuer besseren Seed
use Math::Random; # andere Verteilungen
use Statistics::ChiSquare; # Guete von RNG testen
# Zahlen mit unbeschraenkten Dezimalstellen
use Math::BigInt; # Grosse Int-Zahlen
use Math::BigFloat; # Grosse Gleitpunktzahlen
use Math::Complex; # Komplexe Zahlen
use Roman; # Roemische Zahlen
arith-err.pl |
Arithmetische Fehler |
random-rand.pl |
Zeigt die Verwendung der rand()-Funktion |
random-srand.pl |
Zeigt den Sinn der srand()-Funktion |
random-trulyrandom.pl |
Math::TrulyRandom (CPAN) für bessere Seeds |
chisquare-rand.pl |
Testet die Güte der rand()-Funktion |
random-uniform.pl |
Erzeugt gleichverteilte Zufallszahlen |
random-normal.pl |
Erzeugt normalverteilte Zufallszahlen |
bigint.pl |
Zeigt die Verwendung des Math::BigInt-Moduls |
bigintcmp.pl |
Überladene Vergleichsoperatoren bei Math::BigInt |
bigfloat.pl |
Verwendung des Moduls Math::BigFloat |
bigfloatscale.pl |
Relevante Dezimalstellen bei Math::BigFloat beeinflussen |
complex.pl |
Zeigt die Verwendung der Math::Complex-Zahlen |
Neuere Versionen des Moduls Math::BigInt akzeptieren keine Blanks mehr in den Strings, die an Math::BigInt->new() übergeben werden. Erlaubt sind stattdessen Unterstriche (_). Während die Programme bigint.pl und bigintcmp.pl noch bis einschließlich Perl-5.6.0 funktionieren, werden sie, wenn Blanks benutzt werden, bei neueren Versionen von Math::BigInt nicht mehr korrekt sein. (Noch nicht verifizierte Meldung eines Lesers. 09/23/2001)
Zur Zeit können Sie die Blanks einfach weglassen, um auf der sicheren Seite zu sein. Perl-5.6.0 akzeptiert z.Zt. noch nicht Unterstriche in Math::BigInt Zahlen. bigint.pl und bigintcmp.pl wurden angepasst, so daß sie sowohl bei Perl-5.6.0 als auch (hoffentlich) spätere Versionen von Math::BigInt weiterhin funktionieren. (Farid: 09/24/2001)
In Vorbereitung
arith-err.pl, Seite 136 oben: Warum ist
$var = <STDIN>; # Eingabe vom Benutzer
$var = <STDIN>; chomp $var; # Eingabe vom Benutzer
chomp() notwendig ist, wird auf Seite 137, im ersten Unterabschnitt erläutert. Dort steht, daß die Konvertierung eines Strings in eine Zahl beim ersten Zeichen stoppt, das nicht zu einer Zahl gehören kann. Zu diesen Zeichen gehört auch das \n-Zeichen, das durch das fehlende chomp() eben nicht entfernt wurde. Das ist ein gutes Beispiel dafür, daß es nicht immer notwendig ist, chomp() aufzurufen, wenn aus der jeweiligen Situation ganz klar hervorgeht, daß es nicht notwendig ist. Dennoch wäre ein chomp() aus Gründen der Uniformität von Code möglicherweise angebracht gewesen. (2000/01/27)
* über einen Punkt (.) besteht, durch *:
# Seite 140, 2. Zeile von unten: $ovar = $var =~ /^0[^x]\d*/ ? oct($var) : $var; # Seite 141, 2. Zeile von oben: $ovar = $var =~ /^0[^x]\d*/ ? oct($var) : $var; # Seite 141, 5. Zeile von oben: $ovar = $var =~ /^0[^x]\d*/ ? oct($var) : $var;
[Alte Quelle]
| Last modified: $Date: 2006/05/18 12:55:44 $ FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy |
|