Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
/ HomePage / Computer / Software / Programmierung / Schnipsel
Wer kennt das nicht: da programmiert man Tag ein Tag aus und dann kommt jemand und fragt, wie dies oder das noch mal eben ging...
perl -e 'print "$$\n";'
perl -e '($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();\
$date = sprintf("%02d%02d%02d", ($year % 100), ($mon + 1), $mday);print $date;'
oder kürzer
perl -e 'use POSIX qw(strftime);$str=strftime "%y%m%d",localtime;print $str."\n";'
Datum als YYYYMMDD
perl -e '($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();\
$date = sprintf("%04d%02d%02d", ($year + 1900), ($mon + 1), $mday);print $date;'
oder kürzer
perl -e 'use POSIX qw(strftime);$str=strftime "%Y%m%d",localtime;print $str."\n";'
Anmerkung: Arbeitet man z.B. in einer Bash Shell unter Unix Systemen (cygwin auch) ist folgendes etwas kürzer.
date +%y%m%d
Dieses sinnfreie Zeile soll nur zeigen, wie man Perl dazu bringt etwas zu interpretieren, ohne daß eine Quelltext-Datei erstellt werden muss. Die Ausgabe ist die Prozess-ID des Prozesses des Perl-Interpreters, die es nach Abarbeitung der Zeile nicht mehr gibt.
perl -e 'for ($i=0; $i<10;$i++) { print "$i\n";}'
Ausgabe:
0 1 2 3 4 5 6 7 8 9
if (condition)
{
expression(s)
}
[ elsif (condition) { ... } ]²
[ else { ... } ]³
perl -e 'print $^O."\n";'
perl -e "print $^O;" Extrawurst für Windows
Ausgaben:
| Ausgabe: | System |
| linux | Gentoo Linux |
| solaris | Solaris Intel x86 |
| solaris | Solaris Sun Sparc |
| darwin | Apple Macintosh x86 (Mac Mini) |
| cygwin | Windows cygwin environment |
| * 4NT: Unknown command "perl" | Windows 2003 Server, 4NT Shell, Perl nicht installiert |
| Can't find string terminator "'" anywhere before EOF at -e line 1. | Perl call unter Windows braucht eine Extrawurst |
| MSWin32 | Windows XP 32bit |
Es gibt auch noch File::Find, allerdings kommt es da ab und zu zu etwas kruden Ergebnissen, die dann doch nur mit der opendir() Methode gelöst werden können, weshalb ich Lars File::Find (leider) abgeneigt bin.
# perl
use File::Find qw(find);
$mydir= '/path/to/search';
sub wanted
{
if ($_ =~/\.html$/ && -T $File::Find::name) # html und heuristic Text
{
print $File::Find::name, "\n";
}
}
find(\&wanted, $mydir);
Das funktioniert noch ganz prima, aber wehe man nutzt die %options nebst no_chdir=1 und hat symbolische links, dann funktioniert das ganze nämlich nicht unbedingt.
Dann kommen solche komischen Fehlermeldungen. Wo ich Lars dann nur noch sage 6, setzen.
Can't use string ("no_chdir") as a subroutine ref while "strict refs" in use at /usr/lib/perl5/5.8.8/File/Find.pm line 822.
at /usr/lib/perl5/5.8.8/File/Find.pm line 822
File::Find::_find_dir('HASH(0x99ce798)', '/tmp', 46) called at /usr/lib/perl5/5.8.8/File/Find.pm line 700
File::Find::_find_opt('HASH(0x99ce798)', 1, 'wanted', 'CODE(0x99c51f0)', '/tmp') called at /usr/lib/perl5/5.8.8/File/Find.pm line 1223
File::Find::find('no_chdir', 1, 'wanted', 'CODE(0x99c51f0)', '/tmp') called at /tausch/lla/traversedir.pl line 25
main::traverse() called at /tausch/lla/traversedir.pl line 11
Cool, Perl-Skript überwacht Preise bei Amazon...