April 2009 Archive

Matt Trout hat vor ein paar Tagen über die Enlightened Perl Organisation (EPO), die sich für "Perls Zukunft als Entwicklungsplattform in Unternehmen" stark macht, einen Blog-Wettbewerb ins Leben gerufen.

In order to promote the Perl language, and encourage more people within the Perl community to promote the language to the world outside the Perl echo-chamber, Enlightened Perl is pleased to announce the Iron Man Perl Blogging Challenge.

Mit der Iron Man Blogging Challenge soll die Blogger-Community rund um Perl ihre Programmiersprache auch außerhalb der Perl-Community bekannter machen.

Planet Iron Man

Die Blogs, die an der Iron Man Blogging Challenge teilnehmen, werden auf der EPO-Website aggegriert.

Übersicht der bislang teilnehmenden Blogs

Gastautoren willkommen

Wer einen Artikel über CPAN-Module oder eine Perl-Anwendung hat und kein eigenes Blog betreiben möchte, darf gerne hier als Gastautor mit Namensnennung veröffentlichen. Einfach formlos auf mich zukommen.

Siehe auch

Whois (engl. „who is": wer ist) ist ein Protokoll, mit dem von einem verteilten Datenbanksystem Informationen zu Internet-Domains und IP-Adressen und deren Eigentümern abgefragt werden können. (Quelle: Wikipedia).

Net::Whois::Raw von Walery Studennikov ermittelt ungeparste whois-Informationen.

Beispiel: whois Abfrage .org

#!/usr/bin/perl
use warnings;
use strict;

use Net::Whois::Raw;

my ($dominfo,$whois_server) = whois('perl.org');

print "$whois_server\n";

print $dominfo , "\n";

Das Programm liefert folgende Ausgabe (Personendaten durch ... ersetzt):

whois.pir.org

NOTICE: Access to .ORG WHOIS information is provided to assist persons in 
determining the contents of a domain name registration record in the Public Interest Registry
registry database. The data in this record is provided by Public Interest Registry
for informational purposes only, and Public Interest Registry does not guarantee its 
accuracy.  This service is intended only for query-based access.  You agree 
that you will use this data only for lawful purposes and that, under no 
circumstances will you use this data to: (a) allow, enable, or otherwise 
support the transmission by e-mail, telephone, or facsimile of mass 
unsolicited, commercial advertising or solicitations to entities other than 
the data recipient's own existing customers; or (b) enable high volume, 
automated, electronic processes that send queries or data to the systems of 
Registry Operator or any ICANN-Accredited Registrar, except as reasonably 
necessary to register domain names or modify existing registrations.  All 
rights reserved. Public Interest Registry reserves the right to modify these terms at any 
time. By submitting this query, you agree to abide by this policy. 

Domain ID: ...
Domain Name: ...
Created On: ...
Last Updated On: ...
Expiration Date: ...
Sponsoring Registrar: ...
Status: ...
Status: ...
Status: ...
Registrant ID: ...
Registrant Name: ...
Registrant Organization: ...
Registrant Street1: ...
Registrant Street2: ...
Registrant Street3: ...
Registrant City: ...
Registrant State/Province: ...
Registrant Postal Code: ...
Registrant Country: ...
Registrant Phone: ...
Registrant Phone Ext.: ...
Registrant FAX: ...
Registrant FAX Ext.: ...
Registrant Email: ...
Admin ID: ...
Admin Name: ...
Admin Organization: ...
Admin Street1: ...
Admin Street2: ...
Admin Street3: ...
Admin City: ...
Admin State/Province: ...
Admin Postal Code: ...
Admin Country: ...
Admin Phone: ...
Admin Phone Ext.: ...
Admin FAX: ...
Admin FAX Ext.: ...
Admin Email: ...
Tech ID: ...
Tech Name: ...
Tech Organization: ...
Tech Street1: ...
Tech Street2: ...
Tech Street3: ...
Tech City: ...
Tech State/Province: ...
Tech Postal Code: ...
Tech Country: ...
Tech Phone: ...
Tech Phone Ext.: ...
Tech FAX: ...
Tech FAX Ext.: ...
Tech Email: ...
Name Server: ...
Name Server: ...
Name Server: ...
Name Server: ...
Name Server: ...
Name Server: ...
Name Server: ...
Name Server: ...
Name Server: ...
Name Server: ...
Name Server: ...
Name Server: ...
Name Server: ...

Beispiel: Denic-Abfrage

#!/usr/bin/perl
use warnings;
use strict;

use Net::Whois::Raw;

my ($dominfo,$whois_server) = whois('perl-howto.de');

print "$whois_server\n";

print $dominfo , "\n";

Das Programm liefert folgende Ausgabe (Personendaten durch ... ersetzt):

whois.denic.de

% Copyright (c)2008 by DENIC
% Version: ...
%
% Restricted rights.
%
%
% Terms and Conditions of Use
%
% All the domain data that is visible in the whois search is protected
% by law. It is not permitted to use it for any purpose other than
% technical or administrative requirements associated with the
% operation of the Internet or in order to contact the domain holder
% over legal problems. You are not permitted to save it electronically
% or in any other way without DENIC's express written permission. It
% is prohibited, in particular, to use it for advertising or any similar
% purpose.
%
% By maintaining the connection you assure that you have a legitimate
% interest in the data and that you will only use it for the stated
% purposes. You are aware that DENIC maintains the right to initiate
% legal proceedings against you in the event of any breach of this
% assurance and to bar you from using its whois query.

Domain:      ...
Domain-Ace:  ...
Nserver:     ...
Nserver:     ...
Status:      ...
Changed:     ...

[Holder]
Type:         ORG 
Name:         ...
Address:      ...
Address:      ...
Pcode:        ...
City:         ...
Country:      ...
Changed:      ...

[Admin-C]
Type:         PERSON
Name:         ...
Address:      ...
Pcode:        ...
City:         ...
Country:      ...
Changed:      ...

[Tech-C]
Type:         ROLE
Name:         ...
Organisation: ...
Address:      ...
Pcode:        ...
City:         ...
Country:      ...
Phone:        ...
Fax:          ...
Email:        ...
Changed:      ...

[Zone-C]
Type:         ROLE
Name:         ...
Organisation: ...
Address:      ...
Pcode:        ...
City:         ...
Country:      ...
Phone:        ...
Fax:          ...
Email:        ...
Changed:      ...

Siehe auch

Die für RPM-basierte Linux-Distributionen bereitgestellten CPAN-Pakete sind leider nicht immer sonderlich zahlreich und auch nicht immer ganz taufrisch.

Die Installation mittels

perl -MCPAN -e shell

ignoriert das RPM-Package-Management leider vollständig. Für gestandene Systemadministratoren ein Alptraum.

Erfreulicherweise gibt es mehrere Möglichkeiten aktuelle CPAN-Module für RPM-basierte Linux-Distributionen im Einklang mit dem Paketmanagement zu installieren.

Tools, um aus CPAN-Modulen RPMs zu erzeugen

Talk: Perl in RPM-Land

Dave Cross stellte in seinem YAPC::Europe 2008 Talk "‎Perl in RPM-Land‎" einige dieser Werkzeuge vor.

Perl in RPM-Land
View SlideShare presentation or Upload your own. (tags: linux cpan)

Enjoy!

Mit Sub::Identify - Retrieve names of code references von Rafaël Garcia-Suarez lässt sich sehr einfach der Name des Unterprogramms ermitteln, auf den sich eine Code-Referenz bezieht.

Beispiel

Zunächst wird ein einfaches package namens XYZ erstellt. Dieses ansonsten weitgehend sinnfreie Package gibt aus dem Unterprogramm greeting eine Code-Referenz auf eines der beiden Unterprogramme hallo oder hello zurück. Der Aufrufer von greeting kann aber nicht ohne weiteres erkennen, auf welches der beiden Unterprogramme eine Referenz zurückgeben wird.

package XYZ;
use strict;
use warnings;

use Exporter;
our @ISA = qw/ Exporter /;
our @EXPORT = ();
our @EXPORT_OK = qw/ greeting/;

our $VERSION = '0.01';

###########################################################
sub hello { print "Hello\n" };
###########################################################
sub hallo { print "Hallo\n" };
###########################################################
sub greeting {  
	my $lang = shift @_;
		# Das passende Unterprogramm waehlen
	my $greet = $lang eq 'de' ? \&hallo : \&hello;
		# und als Code-Referenz zurueckgeben
	return $greet;
}
###########################################################
sub VERSION {
	return $VERSION;
}
###########################################################
1;
__END__

Dank Sub::Identify lässt sich nun sehr einfach der Name des Unterprogramms ermitteln, auf den sich die Code-Referenz bezieht.

#!/usr/bin/perl 
use strict;
use warnings;

use Sub::Identify ':all';
use XYZ qw/greeting/;

	# Code-Referenzen holen
my $de = greeting('de');
my $en = greeting('en');

	# und ausfuehren
$de->();
$en->();

identify($de);
identify($en);

###########################################################
sub identify {
	my $coderef = shift @_;
	my $subname = sub_name( $coderef );
	my $p = stash_name( $coderef );
	my $fully_qualified_name = sub_fullname( $coderef );
	defined $subname ?
        print "This coderef points to sub $subname in package $p\n"
		:
        print "oops\n";
}
###########################################################

Das Programm erzeugt folgende Ausgabe:

Hallo
Hello
This coderef points to sub hallo in package XYZ
This coderef points to sub hello in package XYZ

Bei anonymen Code-Referenzen gibt sub_name entsprechend __ANON__ zurück.

Siehe auch

Lingua::ManagementSpeak von Gryphon Shafer hilft bei der Ausarbeitung von englischen Texten im bewährten Buzz Word-Stil.

Nachfolgend zwei einfache Beispiele:

Beispiel: Überschrift, Einleitung und weitere Absätze

#!/usr/bin/perl 
use strict;
use warnings;

use Lingua::ManagementSpeak;

my $ms = new Lingua::ManagementSpeak;

	# Ueberschrift
print $ms->header(), "\n\n";
	# Einleitung
print $ms->paragraph(1), "\n\n";
	# Weiterer Absatz
print $ms->paragraph(), "\n";

Das Programm erzeugt folgende zufällige Ausgabe:

Embracing Excelled Sexy ROI

They might expedite our synergies once we optimize our user-centric e-markets.

We must incentivize our e-business markets when they visualize my e-markets. Its
interfaces are sold because we suggested my back-end functionalities. My users
envisions end-to-end portals. They shall monetize our innovative systems as though my 
turn-key web-readiness can architect my synergistic markets, still its bandwidth is communicated.

Beispiel: Bullets für Powerpoint

#!/usr/bin/perl 
use strict;
use warnings;

use Lingua::ManagementSpeak;

my $ms = new Lingua::ManagementSpeak;

my $number_of_bullets = 5;
my @bullets = $ms->bullets( $number_of_bullets );

foreach my $bullet (@bullets) {
	print '* ', $bullet, "\n";
}

Das Programm erzeugt folgende zufällige Ausgabe:

* Syndicate our back-end mindshare
* Maximize our clicks-and-mortar communities
* Syndicate our impactful web-readiness
* Implement this sticky experiences
* Enable my intuitive ROI

Siehe auch

Über dieses Archiv

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

März 2009 ist das vorherige Archiv.

Mai 2009 ist das nächste Archiv.

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

Fachzeitschriften

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.