Here are some perl scripts which I wrote: [svn]

Some of perl scripts are on system administration page. Take a look there also.


My contribution to CPAN:

Combined ChangeLog for small perl tools

2010-10-28 11:51:21 dpavlin r190

/trunk/ try to convert e-mail addresses in all fields

contributed by Thomas Schwinge <> with following message:

I'm adding the following patch to mailman2mbox, in order to restore more email addresses, References: / In-Reply-To: headers, etc. It's still not perfect, of course, but at least better: it restores proper threading, for example.

2009-04-29 19:55:50 dpavlin r189

/trunk/ install everything in META.yml file from CPAN

2009-03-09 10:07:56 dpavlin r188

/trunk/ convert whitespace -> tabs

2008-05-22 12:54:22 dpavlin r187

/trunk/ added back-tick like syntax for --join --on which enables to replace some data with more verbose one with OpenVZ examples

2008-05-21 14:55:41 dpavlin r186

/trunk/ remove dead code -- left over from refactoring

2008-05-21 14:26:22 dpavlin r185

/trunk/ refactor code to allow math operations between columns (so that I don't need to use awk just for that).

2008-05-20 20:40:38 dpavlin r184

/trunk/ - fix min/max values which where swapped in output
- add command line parameters -d and -f to comply with cut(1)

2008-05-20 20:09:50 dpavlin r183

/trunk/ Added min and max to syntax

I'm quote proud of this perl golfing:
- use mapping to operatior to check validity
- clever use of evil eval to have just one code path

2008-05-20 00:45:50 dpavlin r182

/trunk/ added -d to support any type of delimiter in input data

2008-05-17 21:35:53 dpavlin r181

/trunk/ correctly support simple form of invocation with range

./ 2-3

to show count and group by same columns

2008-05-17 16:01:47 dpavlin r180

/trunk/ - abstract out col_range to support display of range columns again
- support again trivial invocation of: 42

2008-05-17 14:16:36 dpavlin r179

/trunk/ added --human option to display units

2008-05-17 14:13:42 dpavlin r178

/trunk/ re-write most of this script to make it support sum operations together with count on columns

2008-05-17 12:07:58 dpavlin r177

/trunk/ fix warning

2008-03-11 12:29:28 dpavlin r176

/trunk/ - move configuration to ~/.sites.yaml
- added ability to submit form at beginning (for login)

2007-10-27 22:09:08 dpavlin r175

/trunk/ don't include pod in css :-(

2007-02-15 17:29:18 dpavlin r174

/trunk/ some timing, less verbose output by default

2007-02-15 17:19:37 dpavlin r173

/trunk/ import Web Site Mapper by Timm Murray (with some local changes I guess)

2007-02-02 23:28:08 dpavlin r172

/trunk/ Anna (ups, irc-logger) moved to it's own respository

2007-02-02 22:27:36 dpavlin r171

/trunk/ count pings and ignore them, be very liberal about invitations, slightly better poll output

2007-02-02 21:37:52 dpavlin r170

/trunk/ implement count|poll <something> <scan nr last messages> which will count all <something>+ or <something>- so you can create quick polls about topics.

2006-10-24 12:51:49 dpavlin r169

/trunk/ sleep and reconnect on socket errors

2006-10-24 12:50:41 dpavlin r168

/trunk/ display total number of characters in messages and average size

2006-08-27 16:49:48 dpavlin r167

/trunk/ convert blog entries and comments from Bryar to Movable Type

2006-08-07 23:17:09 dpavlin r166

/trunk/ use Mirrored from: if available

2006-08-07 23:03:58 dpavlin r165

/trunk/ support // local repository

2006-08-06 12:03:08 dpavlin r164

/trunk/ resolve svk depots to local svn paths (now works with checkouts which aren't top of depot)

2006-07-07 23:34:18 dpavlin r163

/trunk/ include default css and create it in pod.css in output directory if there isn't allready one.

2006-06-28 15:05:28 dpavlin r162

/trunk/ support svk checkouts

2006-06-28 15:04:41 dpavlin r161

/trunk/ follow symlinks

2006-06-26 15:18:46 dpavlin r160

/trunk/ extension to from Pod::Xhtml, but with ability to recurse directories and generate navigation frameset

2006-06-26 15:16:02 dpavlin r159

/trunk: ignore some files

2006-06-25 19:16:12 dpavlin r158

/trunk/ limit last to 100 messages

2006-06-25 17:48:33 dpavlin r157

/trunk/ use current time in save_message

2006-06-25 17:40:59 dpavlin r156

/trunk/ re-structured code and wrote --import-dircproxy to import logfiles from dircproxy

2006-06-25 16:37:39 dpavlin r155

/trunk/ added save_message which saves to db and adds tags

2006-06-25 00:10:13 dpavlin r154

/trunk/ added /history display with calenar of all available days (with number of messages) and ability to select messages for individual day

2006-06-24 22:57:26 dpavlin r153

/trunk/ somewhat better logging

2006-06-24 22:15:47 dpavlin r152

/trunk/ use development settings if hostname is llin, be less chatty

2006-06-19 11:32:16 dpavlin r151

/trunk/ real-time update of tag clound, search nukes arguments

2006-06-17 17:23:26 dpavlin r150

/trunk/ embed links to tags in message text

2006-06-16 21:28:46 dpavlin r149

/trunk/ adding tags from messages, try to fix encoding mess (needs more work)

2006-06-16 20:55:19 dpavlin r148

/trunk/ fix invocation without tag

2006-06-16 20:51:32 dpavlin r147

/trunk/ added tags to html interface

2006-05-22 16:19:00 dpavlin r146

/trunk/ more css design work

2006-05-20 10:30:45 dpavlin r145

/trunk/ paginate output in days

2006-05-20 10:12:19 dpavlin r144

/trunk/ search nicks and messages, not just messages

2006-03-26 17:49:54 dpavlin r143

/trunk/ fix alternative nicks in last output

2006-03-26 01:01:10 dpavlin r142

/trunk/ changed url parametar for number of last messages to ?last=42

2006-03-24 23:19:57 dpavlin r141

/trunk/ strip _ before and after nick

2006-03-20 11:24:51 dpavlin r140

/trunk/webnote/webnote.js: close icon is again trashcan

2006-03-19 21:39:51 dpavlin r139

/trunk/webnote/lib/ fix encoding while storing in database

2006-03-19 21:29:46 dpavlin r138

/trunk/webnote/lib/ use first line of note as title for rss item

2006-03-19 20:57:43 dpavlin r137

/trunk/webnote/style.css, /trunk/webnote/webnote.js, /trunk/webnote/lib/, /trunk/webnote/objects.js: update to new upstream version (and minor tweaks in to return text/xml)

2006-03-19 20:57:08 dpavlin r136

/trunk/webnote/strix.cgi: better example for integration with Strix

2006-03-19 19:46:07 dpavlin r135

/trunk/webnote/lib/ use Encode everywhere instead of Text::Iconv, fixed POSTDATA= problem, fixed saving of empty notes

2006-03-18 16:02:32 dpavlin r134

/trunk/ implemented context search using +number in search string

2006-03-14 17:17:53 dpavlin r133

/trunk/ colorize nicks in web output, support for multiple filters (for now, message and nick)

2006-03-13 21:02:16 dpavlin r132

/trunk/ implemented irc_ctcp_action (/me) and automatic creation of log table and indexes (it uses PostgreSQL database with same name as nick)

2006-03-13 17:07:40 dpavlin r131

/trunk/ escape special characters in HTML

2006-03-13 16:50:07 dpavlin r130

/trunk/ fix display of search results

2006-03-13 16:43:18 dpavlin r129

/trunk/ added search to web

2006-03-13 12:56:26 dpavlin r128

/trunk/ added Regexp::Common to convert URLs to links in html

2006-03-12 14:36:12 dpavlin r127

/trunk/ output encoding is now configurable and supported on web

2006-03-12 14:19:00 dpavlin r126

/trunk/ added http server to display last messages

2006-03-12 13:33:20 dpavlin r125

/trunk/ compress last output

2006-03-02 00:52:22 dpavlin r124

/trunk/ implemeted get_from_log, and using that grep

2006-03-02 00:19:12 dpavlin r123

/trunk/ removed all void handling, implemented some of my (notice, server notice), msg to pretend that you are irc-logger

2006-03-01 23:35:56 dpavlin r122

/trunk/ sort by full time, not just time

2006-03-01 22:42:21 dpavlin r121

/trunk/ added simple /msg help, implemented proper /msg last, support irc_registered for

2006-03-01 21:29:14 dpavlin r120

/trunk/ implemented trivial irc_505 for, implemented /msg stat [number] to get some statistics about most active users

2006-02-27 12:41:10 dpavlin r119

/trunk/ use Encode to convert into ISO-8859-2

2006-02-27 12:10:07 dpavlin r118

/trunk/ added storage into database

2006-02-27 11:54:38 dpavlin r117

/trunk/ IRC bot which replace human memory

2006-01-10 09:08:08 dpavlin r116

/trunk/hz.cgi: new link URI (which uniques drifting trans), debug output goes to STDERR

2006-01-10 08:53:53 dpavlin r115

/trunk/hz.cgi: get also on-line status and use that for more informations

2006-01-10 08:52:31 dpavlin r114

/trunk/hz.cgi: screen scrape and generate RSS feed from it

2005-09-11 14:27:35 dpavlin r113

/trunk/ remove debug

2005-09-11 12:06:33 dpavlin r112

/trunk/ display svk revision after commit message

2005-09-02 16:27:44 dpavlin r111

/trunk/ create new temporary file when downloading instead of overwriting existing one

2005-09-02 16:00:18 dpavlin r110

/trunk/ ftp bandwidth tester

2005-07-31 21:22:42 dpavlin r109

/trunk/ dump sqlite3 database

2005-05-23 17:00:50 dpavlin r108

/trunk/ keep-alive ping interval is not 1h

2005-04-10 20:50:32 dpavlin r107

/trunk/ better command output, added revert (R), move with < >

2005-04-10 19:25:01 dpavlin r106

/trunk/ first version of utility to merge subversion changes using cherry picking

2005-04-02 23:46:33 dpavlin r105

/trunk/ - added !ping command used internally for keep-alive
- assume that all messages which start with ! are commands and warn if not known
- added xsend_all_except to send join/leave messages to all members except one which just joined/left chat
- added rate_alert and error reporting
- added silence interval of 60, and after 5 failed pings it could signoff and sign on again (but it doesn't yet)

2005-04-01 22:32:03 dpavlin r104

/trunk/ added !rmskip to remove someone from skip list

2005-03-30 09:45:49 dpavlin r103

/trunk/webnote/Makefile: make html documentation

2005-03-29 20:18:19 dpavlin r102

/trunk/webnote/lib/ fix RSS urls, encode whitescape characters in notes

2005-03-29 18:35:40 dpavlin r101

/trunk/webnote/strix.cgi: example integration with STRIX (php application with iframe for Webnote)

2005-03-29 18:34:39 dpavlin r100

/trunk/webnote/webnote.js: use baseURI to call cgi script

2005-03-29 17:46:02 dpavlin r99

/trunk/webnote/lib/ fix for default and documentation update

2005-03-29 16:02:32 dpavlin r98

/trunk/webnote/lib/, /trunk/webnote/webnote.cgi: create run() method to move main loop in module

2005-03-29 15:48:57 dpavlin r97

/trunk/webnote/lib/ documentation improvements

2005-03-26 21:30:14 dpavlin r96

/trunk/webnote/lib/ decode UTF-8 only if I created some UTF-8.

2005-03-26 20:59:21 dpavlin r95

/trunk/webnote/lib/ save workspace in transaction, another round of fixes (I will never get this right, it seems)

2005-03-26 18:40:25 dpavlin r94

/trunk/webnote/lib/ fix smartquotes and other misc annoyances

2005-03-26 15:42:50 dpavlin r93

/trunk/webnote/lib/, /trunk/webnote/webnote.cgi: store data in database in different encoding (by default, webnote uses UTF-8). cleanup and fixes

2005-03-26 12:29:51 dpavlin r92

/trunk/webnote/lib/ stats order by date desc, fixed timezone for dc:date

2005-03-26 12:20:17 dpavlin r91

/trunk/webnote/lib/, /trunk/webnote/webnote.cgi: added /stats method which generate RSS 1.0 feed of statistics

2005-03-25 23:44:02 dpavlin r90

/trunk/webnote/lib/ create div with class="webnote"

2005-03-25 23:19:19 dpavlin r89

/trunk/ return error for failed info requests

2005-03-25 21:40:32 dpavlin r88

/trunk/webnote/lib/ create colored RSS feed, fetch notes by noteid desc from database

2005-03-25 21:29:43 dpavlin r87

/trunk/webnote/lib/, /trunk/webnote/webnote.cgi: implemented RSS feed and strange js_unescape function, I should really store data in database in readable form, and not JavaScript escaped.

2005-03-25 18:25:03 dpavlin r86

/trunk/webnote/webnote.js, /trunk/webnote/lib/ added checkTimeout variable (interval to check for new updates), added some debugging, support /save method from Internet Explorer

2005-03-25 17:24:05 dpavlin r85

/trunk/webnote/lib/, /trunk/webnote/webnote.cgi: /getdates and /getrecent now work as expected

2005-03-25 17:23:13 dpavlin r84

/trunk/webnote/images/trashcan.gif, /trunk/webnote/webnote.js: new trashcan icon instead of red X

2005-03-24 22:36:44 dpavlin r83

/trunk/webnote/webnote.js, /trunk/webnote/lib/ fix encoding of characters comming from bookmarklet

2005-03-24 20:53:30 dpavlin r82

/trunk/webnote/Makefile, /trunk/webnote/create.sql, /trunk/webnote/lib/ store dates in database as timetamps

2005-03-24 20:17:52 dpavlin r81

/trunk/webnote/webnote.js, /trunk/webnote/lib/, /trunk/webnote/webnote.cgi, /trunk/webnote/style.css: bookmarklet works, small fixes

2005-03-24 19:39:43 dpavlin r80

/trunk/webnote/lib/, /trunk/webnote/webnote.cgi, /trunk/webnote/webnote.js: a try at implementing /getdates

2005-03-24 17:51:58 dpavlin r79

/trunk/webnote/lib/ small fixes

2005-03-24 17:00:27 dpavlin r78

/trunk/webnote/lib/ load allmost work

2005-03-24 16:30:43 dpavlin r77

/trunk/webnote/Makefile, /trunk/webnote/create.sql, /trunk/webnote/lib/, /trunk/webnote/webnote.cgi: save workspace works

2005-03-24 14:41:05 dpavlin r76

/trunk/webnote/Makefile, /trunk/webnote/images/undo.gif, /trunk/webnote/webnote.js, /trunk/webnote/images/reload.gif, /trunk/webnote/images/saving.gif, /trunk/webnote/create.sql, /trunk/webnote/images/new.gif, /trunk/webnote/images/redo.gif, /trunk/webnote/lib/, /trunk/webnote/objects.js, /trunk/webnote/webnote.cgi, /trunk/webnote/images/minixml.gif, /trunk/webnote/lib, /trunk/webnote/images/save.gif, /trunk/webnote/style.css: import new version from upstream CVS, start of DBI code

2005-03-20 00:50:31 dpavlin r75

/trunk/ echo local for each user

2005-03-20 00:22:11 dpavlin r74

/trunk/ small fixes

2005-03-19 23:47:16 dpavlin r73

/trunk/ implemented !last command to see history

2005-03-19 23:19:10 dpavlin r72

/trunk/ log all sent messages and replies (with ugly hack for im_ok which returns wrong request_id)

2005-03-19 21:22:39 dpavlin r71

/trunk/ first try with logging into database

2005-03-18 15:14:39 dpavlin r70

/trunk/ !exit removes user from buddy list, so unknown capabilities broadcast don't re-join user to chat.

2005-03-17 11:54:27 dpavlin r69

/trunk/ This bot is going into maintenance mode (serious bugfixes only). New version will be in separate repository, and this is left only as sample about writing simple bot.

Nothing more here, move on :-)

2005-03-17 00:19:41 dpavlin r68

/trunk/ Fixed alphabet soup: now output encoding is ISO-8859-1 (or whatever client is displaying as default encoding). More sane startup, ask for uin or password if not known. Report bot uin as "bot", send motd only if it exists, debug hides password.

2005-03-16 16:29:44 dpavlin r67

/trunk/ added !motd and other smaller improvements

2005-03-16 14:10:04 dpavlin r66

/trunk/ somewhat fixed character encoding mess

2005-03-16 01:27:22 dpavlin r65

/trunk/ left chat message fix

2005-03-16 01:16:23 dpavlin r64

/trunk/ convert <br> to lf

2005-03-16 00:09:16 dpavlin r63

/trunk/ bugfixes, more powerfull !online

2005-03-15 23:27:33 dpavlin r62

/trunk/ Major upgrade: buddy list handling, better logging, few more hidden commands:
- !info [uin|name]
- !online or !on-line to refresh member status (it will restrict distribution just to on-line members)
- !broadcast or !all to send to all members (assume that everybody is on-line)
- !debug (very insecure, remove from production code)

2005-03-15 14:37:45 dpavlin r61

/trunk/ added kick and better message if you kick somebody

2005-03-15 13:02:54 dpavlin r60

/trunk/ added easter egg

2005-03-15 12:23:10 dpavlin r59

/trunk/ added !members or !list and !invite

2005-03-14 16:31:42 dpavlin r58

/trunk/ First version of script to support group chat over ICQ

2005-03-14 16:31:27 dpavlin r57

/trunk/ group by some columns and return something else

2005-03-13 21:03:21 dpavlin r56

/trunk/webnote/webnote.cgi: forgoten commit

2005-02-10 06:29:18 dpavlin r55

/trunk/ added eval around Term::ReadKey::GetTerminalSize

2005-02-10 06:28:27 dpavlin r54

/trunk/ fix for warnings

2005-02-10 06:23:11 dpavlin r53

/trunk/ Group by filter which is used like this:

$ last | 1

This will sort output of last grouped by field 1 (login) and output count and field name.

If you want to group by one filed and sort by some others you can just append numbers of fields to putput (space separated).

2005-02-10 01:58:08 dpavlin r52

/trunk/ Small script to do powerfull reporting based on first (space delimited) element of STDIN and description which is eveything rest. It will generate rolling sum and graph:

$ ps v | awk '{ print $8 " " $9 " " $10 }' | sort -rn | ~/private/perl/ | head

You can add this to alias to create list of worst offenders to your memory freedom :-)

2005-01-24 17:11:26 dpavlin r51

/trunk/ DNS lint took to check domain against primary DNS server and all others (for now it checks serials and NS records)

2005-01-24 17:10:45 dpavlin r50

/trunk/ support for arguments

2004-09-28 18:13:26 dpavlin r49

/trunk/svn2csv: create csv file from SubVersion repository so that you can draw nice graphs about it.

2004-09-11 19:18:51 dpavlin r48

/trunk/ Lorem Ipsen generator

2004-09-11 09:09:38 dpavlin r47

/trunk/ mirror MIRRORED.BY, create indices/ls-lR.gz

2004-07-30 14:05:42 dpavlin r46

/trunk/ speed up (I hope)

2004-07-21 12:19:26 dpavlin r45

/trunk/ more clean-up for ooo 1.1.x

2004-06-20 22:46:59 dpavlin r44

/trunk/webnote, /trunk/webnote/objects.js, /trunk/webnote/webnote.cgi, /trunk/webnote/images, /trunk/webnote/style.css, /trunk/webnote/images/close.png, /trunk/webnote/images/close.gif, /trunk/webnote/webnote.js: webnote port to perl

2004-06-16 20:55:00 dpavlin r43

/trunk/ string randomiser based on rsecareh at Cmbagrdie Uinervtisy

2004-05-11 08:53:53 dpavlin r42

/trunk/ Clean html produced by Writer into something nicer (with correct encoding, hard-coded in script)

2004-04-28 13:39:16 dpavlin r41

/trunk/ cosmetic fixes

2004-04-28 13:06:21 dpavlin r40

/trunk/ Present SubVersion log as html page

2004-04-28 10:22:26 dpavlin r39

/trunk/ bulk send e-mail (if you use it to spam someone, I will track you down!)

2004-04-28 10:21:28 dpavlin r38

/trunk/ decode URL encoded characters in filenames

2004-04-28 10:20:50 dpavlin r37

/trunk/ use WWW::Mechanize to fill provider's form and send sms

2004-04-28 09:50:30 unknown r36

/tags, /tags/a: This commit was manufactured by cvs2svn to create tag 'a'.

2004-03-01 16:53:07 dpavlin r35

/trunk/ fix broken MailMan archive download format to correct mbox format (seems to be issue only with older mailman installations, but they are still often)

2004-01-31 18:50:31 dpavlin r34

/trunk/ encode < > and & for html

2004-01-31 18:25:54 dpavlin r33

/trunk/ optionally compress readme files

2004-01-20 19:48:05 dpavlin r32

/trunk/ create gziped readme files (to save disk space)

2004-01-18 23:08:12 dpavlin r31

/trunk/ dump Mozilla's passwords which are stored in user profile

2003-11-19 14:15:09 dpavlin r30

/trunk/ produce dot file (for graphviz) from traceroute output. Very useful to compare traceroutes from different parts of world to your server.

2003-10-26 14:24:32 dpavlin r29

/trunk/ format rcs2log output to html

2003-09-04 14:39:17 dpavlin r28

/trunk/ added command-line argument

2003-09-04 14:36:44 dpavlin r27

/trunk/ use perl from /usr/bin

2003-08-06 17:55:19 dpavlin r26

/trunk/ support -v and -d switch

2003-08-06 17:55:08 dpavlin r25

/trunk/ typos, typos...

2003-08-06 17:40:47 dpavlin r24

/trunk/ Print all files which are in CVS repository

2003-06-24 21:18:21 dpavlin r23

/trunk/ support for more than one interface

2003-05-11 12:43:02 dpavlin r22

/trunk/ draw WiFi graphs

2003-05-10 15:06:17 dpavlin r21

/trunk/ better customization, first released version

2003-05-08 16:05:12 dpavlin r20

/trunk/ create index for HouseSpider

2003-05-08 15:58:07 dpavlin r19

/trunk/ re-mail inboxes through sendmail

2003-05-08 15:57:43 dpavlin r18

/trunk/.cvsignore: ignore more

2003-05-08 15:57:02 dpavlin r17

/trunk/ script for migration of OSF (Digital Unix) passwords (without C2) to pam

2003-05-08 14:58:24 dpavlin r16

/trunk/, /trunk/ sort bind zone

2003-02-01 00:51:51 dpavlin r15

/trunk/ added support for .tgz archives

2003-02-01 00:46:20 dpavlin r14

/trunk/ re-mail error messages which failed because of e.g. No name server (you did configured it correctly this time, didn't you?)

2003-02-01 00:43:51 dpavlin r13

/trunk/ fix mbox-es: e.g. remove virus messages from them

2003-02-01 00:43:02 dpavlin r12

/trunk/ Send a bunch of files to various e-mails at once (create dirs which are e-mail addresses, change text of message in script and drop files in those dirs).

2003-02-01 00:40:22 dpavlin r11

/trunk/ Mirror CPAN latest archive.

2003-02-01 00:39:46 dpavlin r10

/trunk/ changes so old, that I don't really remember...

2002-08-01 15:27:38 dpavlin r9

/trunk/rrd/graph.cgi: example rrdcgi page to display graph

2002-08-01 15:24:42 dpavlin r8

/trunk/rrd, /trunk/rrd/ script which can turn your old access.log from apache into rrdtool database. It will NOT update database in real time -- it depends on dates in log

2002-06-11 15:17:28 dpavlin r7

/trunk/ parse maillog from different machines and report it in message-by-message form

2001-06-18 06:44:14 dpavlin r6

: initial import

2001-06-18 06:44:14 unknown r5

/branches/DbP/, /branches/DbP/.cvsignore: This commit was manufactured by cvs2svn to create branch 'DbP'.

2001-06-18 06:43:21 dpavlin r4

/trunk/, /trunk/.cvsignore: Initial revision

2001-06-14 11:50:21 dpavlin r3

: initial import

2001-06-14 11:50:21 unknown r2

/branches/DbP, /branches: This commit was manufactured by cvs2svn to create branch 'DbP'.

2001-06-14 11:50:20 dpavlin r1

/trunk, /trunk/ Initial revision