September 2009 Archive

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.

 

Beispiel

#!/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 |
'---------+---------'

 

Siehe auch

File::Which von Adam Kennedy bietet ein portables which, auch für Betriebssysteme, auf denen dieses Tool nicht verfügbar ist.

Which Way

 

which

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

 

pwhich

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

 

Beispiel: File::Which

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

Siehe auch

Bildnachweis

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.

Beispiel: Fehler beim Einbinden eines Modul zur Laufzeit abfangen

#!/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

Beispiel: Eigener Signalhandler

#!/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

Siehe auch

Über dieses Archiv

Diese Seite enthält alle Einträge von Perl HowTo von neu nach alt.

August 2009 ist das vorherige Archiv.

Oktober 2009 ist das nächste Archiv.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.