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