Das erste Video von der YAPC::EU::2009 ist online: Larry Wall talking about Perl 6.
Weitere Videos sollen in den nächsten Wochen folgen.
via: YAPC::EU::2009 videos - Larry Wall talking about Perl 6
Das erste Video von der YAPC::EU::2009 ist online: Larry Wall talking about Perl 6.
Weitere Videos sollen in den nächsten Wochen folgen.
via: YAPC::EU::2009 videos - Larry Wall talking about Perl 6
Dank Text::ASCIITable von Håkon Nessjøen lassen sich schöne Tabellen im Textmodus im Handumdrehen erstellen.
#!/usr/bin/perl use strict; use warnings; use Text::ASCIITable; my $table = Text::ASCIITable->new( { headingText => 'Sales per Year' } ); $table->setCols( 'Year', 'Sales' ); $table->alignCol( 'Year' => 'left', 'Sales' => 'right' ); $table->addRow( 2005, "3000.00" ); $table->addRow( 2006, "4000.00" ); $table->addRow( 2007, "3500.00" ); $table->addRow( 2008, "5800.00" ); $table->addRowLine; $table->addRow( 'Average', "4075.00" ); print $table;
Das Programm erzeugt folgende Ausgabe:
.-------------------. | Sales per Year | +---------+---------+ | Year | Sales | +---------+---------+ | 2005 | 3000.00 | | 2006 | 4000.00 | | 2007 | 3500.00 | | 2008 | 5800.00 | +---------+---------+ | Average | 4075.00 | '---------+---------'
File::Which von Adam Kennedy bietet ein portables which, auch für Betriebssysteme, auf denen dieses Tool nicht verfügbar ist.
Das which utility zeigt unter Linux den vollen Pfad zu einer ausführbaren Datei an:
$ which perldoc /usr/local/bin/perldoc $ which -a perldoc /usr/local/bin/perldoc /usr/bin/perldoc
Ein vergleichbares Ergebnis erzielt das Perl-Programm pwhich, das zum Lieferumfang von File::Which gehört:
$ pwhich perldoc /usr/local/bin/perldoc $ pwhich -a perldoc /usr/local/bin/perldoc /usr/bin/perldoc
Ein einfaches Beispiel für die Einbindung in eigene Programme:
#!/usr/bin/perl use strict; use warnings; use File::Which; # exports which() my $what = 'perldoc'; # executable ohne Pfad, nach dem gesucht wird my $path = $ENV{PATH}; my $exe_path = which( $what ); # skalaler Kontext - Liefert den ersten Treffer in $path my @paths = which( $what ); # Listenkontext - Liefert alle Treffer in $path print "PATH Enviroment: $path\n"; if ( defined $exe_path ) { # Mindestens ein Treffer print "Executable (First Match): $exe_path\n"; print "Alle Executables: ", join(", ", @paths), "\n"; } else { print "Kein Treffer fuer $what\n"; }
Das Programm erzeugt unter Windows folgende Ausgabe:
X:\>perl which.pl PATH Enviroment: C:\Perl\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\cygwin\bin;C:\Programme\jEdit;C:\WINDOWS\system32\WindowsPowerShell\v1.0 Executable (First Match): C:\Perl\bin\perldoc.BAT Alle Executables: C:\Perl\bin\perldoc.BAT
Which Way? von Urville Djasim.
Das recht neue CPAN-Modul Try::Tiny von יובל קוג'מן (Yuval Kogman) bietet einen einfachen Ausnahmebehandlungs-Mechanismus.
Wer nicht zwingend auf alle Bells und Whistles von TryCatch angewiesen ist, sollte Try::Tiny mal ausprobieren.
#!/usr/bin/perl use strict; use warnings; use Try::Tiny; try { require Foo; } catch { # $_ enthaelt Fehlermeldung if ( /^Can't locate Foo\.pm in \@INC/ ) { # ignore warn "Harmloser Fehler: Foo kann nicht geladen werden\n"; } else { die "Fataler Fehler: $_"; # Alle anderen Fehler sind fatal } };
Das Programm erzeugt folgende Ausgabe:
Harmloser Fehler: Foo kann nicht geladen werden
#!/usr/bin/perl use strict; use warnings; use Try::Tiny; try { local $SIG{ALRM} = sub { die "Zeitlimit überschritten $!" }; alarm(2); sleep(5); # Lang laufende Operation } catch { # $_ enthaelt Fehlermeldung if ( /Zeitlimit/i ) { warn "Timed out\n"; } else { die "Anderer Fehler: $_\n"; } }; alarm(0);
Das Programm erzeugt folgende Ausgabe:
Timed out