perl hacks
This page contains links to some of my perl hacks. It is autogenerated from the comments (if any) at the head of each file.
- DCOP.pm(updated Wed Jan 23 07:27:33 2008)
- # the CPAN-provided DCOP is awful: it uses backticks to do the heavy
# lifting, so you need to preprocess any data you hand to it to remove
# dangerous things like, well, more backticks. So I'm fixing it
# here.
- Device(updated Wed Nov 21 12:29:52 2012)
- Subdirectory
- ExchangeRate.pm(updated Tue Jan 6 01:00:14 2009)
- MapServer(updated Wed Nov 21 12:29:52 2012)
- Subdirectory
- MapServer.pm(updated Wed Jul 6 16:41:00 2005)
- # Interface to various online map servers.
# Waider 2001
- Monitor(updated Wed Nov 21 12:29:53 2012)
- Subdirectory
- Monitor.pm(updated Sat Jun 5 14:51:59 2004)
- # Created: Waider 26 September 2000
# Last Modified: Waider 08 October 2000
# October 2002:
# Use Gtk::Perl
# -----------------------------------------------------------------------------
- Net(updated Wed Nov 21 12:53:04 2012)
- Subdirectory
- RVP.pm(updated Mon Aug 27 06:22:06 2007)
- #
# cheap RVP server implementation.
#
# Bolting this onto your Apache server:
# PerlSwitches -I/path/to/RVP/module
# <Location /instmsg>
# PerlHeaderParserHandler RVP
# </Location>
#
# You also require a mysql database; the schemas required are at the
# end of this script.
#
# Main TODO item:
# * implement ACL controls.
# most of this works pretty well
# * polling would be good
- SrvMon.pl(updated Fri Oct 4 08:50:48 2002)
- # Quick hack to monitor some stuff on Spike / Waider, May/June 2000
- Stock.pm(updated Mon Dec 9 07:36:36 2013)
- #
# Stock Quote Module
#
# Currently actually a Yahoo Stock Quote Module; if I feel the urge I
# may build a module tree instead. Based on previous Stock Exchange
# efforts.
#
# Waider 07/06/2003
- UPC(updated Wed Nov 21 12:29:53 2012)
- Subdirectory
- UPC.pm(updated Mon Jan 4 22:49:46 2016)
- advert-server.pl(updated Tue Jan 13 16:47:27 2004)
- # Ad Banner server for ad-free webbing.
# Original code Waider 1997 or so.
# Revamped July 2000 when I learned a little more about Perl, but it's
# still disgusting. It's not multithreaded or anything.
#
# December 2001: Mozilla no longer groks XBMs, or at least not with
# the headers I'm putting out. So I'm switching to PNGs, as I'd
# planned on doing at some point anyway.
#
# While I was at it, I cleaned up the code a little. Not much, though.
#
# April 20, 2003: Conditionalised printing of request details
# 06/08/2003: fortune is no longer packaged on redhat, alas.
- airprint-republish.pl(updated Mon May 4 10:27:28 2015)
- #
# add airprint records to match any existing printers
#
- botrc(updated Sun Jul 2 12:02:52 2006)
- cabarc(updated Sun Jul 20 21:01:25 2003)
- #
# Perl Script to emulate Windows cabarc
# Incomplete, naturally.
# Waider, some time in 1998
#
# Wow. Listing mode actually works on old cabfiles.
# 2003/01/06 Add use strict, fix resulting errors
# 2003/07/14 Started working on cab creation
- cd-thing.pl(updated Mon Oct 29 12:28:58 2007)
- #
# This script is intended to assist you in renaming/retagging MP3
# files you've downl^Wripped from your legally-purchased CDs but
# neglected to tag/name correctly. It uses FreeDB to check what your
# file's supposed to be tagged as based on information gleaned from
# the file. If you've got a griprc, it uses that to determine what the
# file should be named.
#
# Basically, it's part of my ongoing quest to have my computer do damn
# near everything for me,
#
# 22/06/2003 Created
#
- cddb-thing.pl(updated Fri Aug 22 20:17:56 2003)
- #
# Recover lost cddb files using discid files created by Gronk
#
# Correct said files from info stored in the directory structure, if
# possible. Some people are utter monkies when it comes to putting
# data into CDDB.
#
# CDDB HTTP Query Format:
# http://www.freedb.org/~cddb/cddb.cgi?cmd=cddb+read+rock+12345678&hello=joe+my.host.com+xmcd+2.1&proto=1
- clamc(updated Tue Oct 2 20:47:42 2012)
- # -*-CPerl-*-
# clamd client
#
- cleanup.pl(updated Tue Dec 6 20:56:23 2011)
- #
# I use up2date, and have it not delete the binaries. This accumulates
# cruft over time, and up2date doesn't have the "delete older
# binaries" option that I'd like it to have. So, this script attempts
# to clean up the specified (default current) directory in that
# manner.
#
# CAUTION: Deletes files. YHBW.
#
# September 2002:
# Use RPM::Header to examine and compare versions
# Use Getopts::Long to get options
# 08/06/2003 RPM::Header is no longer viable. curses!
# 15/02/2004 Added back in a hand-rolled vercmp
# 22/02/2004 Swapped meaning of debug & verbose flags (sanity)
# Try and find a viable RPM package
- cpan-to-rpm.pl(updated Thu Jun 26 23:33:06 2008)
- #
# Grab a module from CPAN and sock it into an RPM using cpanflute2
#
- dart.pl(updated Mon Jan 28 00:14:25 2008)
- #
# Get dart times and parse them into something readable
#
# http://www.irishrail.ie/your_journey/picker_real_time_results.asp?station_name=Glenageary&station=GYDN%2CGYUP&direction=S&mins=60&image1.x=11&image1.y=5&radioservice=1&radioservice1=1
# http://www.irishrail.ie/your_journey/picker_real_time_results.asp?station_name=Glenageary&direction=S&mins=60&image1.x=11&image1.y=5&radioservice=1&radioservice1=1 also works
#
- dersrc.pl(updated Tue Oct 2 20:47:42 2012)
- # decompile the resource fork of a CodeWarrior .rsrc file
# Waider 1999/2000
- digest-to-folder.pl(updated Thu Sep 6 22:02:28 2001)
- # Convert a majordomo digest to a mbox folder. rough and ready.
# Waider August 2000
- films.pl(updated Sat May 8 08:45:39 2010)
- #
# TV listings toy
#
- gps.pl(updated Thu Sep 6 22:02:28 2001)
- # Playing with GPS toy
# Waider, September 2000
- jstest.pl(updated Thu Sep 6 22:02:28 2001)
- # Joystick Test Toy
# Waider November 12 2000
# Because I didn't have jstest on my system.
# Open the joystick device
- junzip.pl(updated Sun Mar 28 17:16:57 2004)
- #
# unpack a japanese zipfile, converting sjis filenames to unicode on the way
#
- ktwittering.pl(updated Tue Jan 22 23:51:09 2008)
- # use knotify to watch twitter
#
# FIXME:
# shouldn't have username & password on command line
# should remember last seen tweet
# should replace $tweet->[] with $tweet->{}
# should be smarter about putting entries in the @tweet array so that we don't have to sort it
# should have a better time format than unix time...
#
- ljnntp.pl(updated Tue Oct 2 20:47:42 2012)
- #
# Bad things with lj
#
- lotto.pl(updated Sat Dec 8 18:11:43 2001)
- #
# Lotto checking script. stupid idea, but heck, I'm crazy enough to try it.
#
- mailman.pl(updated Tue Oct 2 20:47:42 2012)
- #
# MAILMAN BLOWS GOATS.
# You can't block mails to mailman, you can only redirect them to the
# admin address. So my attempts to stop up some of the spam on the
# BBDB list results in me getting a steady stream of crap at the admin
# address instead. This script is designed to go in and rip them
# out. If there's a real admin request in there, tough. I might notice
# it in the mailshots I get, and then again I might not.
# 22/05/2003 Rewrote to use HTML::TokeParser and also Mail::SpamAssassin
#
# 22/08/2003 HTA: Added some stuff to make Mailman 2.1 easier
# (mailman 2.1 has to have details=all in order to get
# the messages, but fails if you add that into the URL
# when blipping them)
# Also added reporting of nonspam.
#
# 23/08/2003 Add support for custom SpamAssassin config file (--saconfig)
#
# 15/04/2003 Add learning support (Ted T'so)
#
# 24/04/2003 Merge SpamAssassin 3.0.0 and MailMan 2.1.4 support (Justin Mason)
#
# 27/05/2006 Switch to using WWW::Mechanize
#
# TODO:
# * cgi mode, where it generates a Mailman admin page, but with
# defaults set sanely (i.e. if it's spam, set the default option to
# 'discard')
#
- mailstats.pl(updated Thu Mar 29 16:43:31 2007)
- #
# Rough shot at how much spam I'm getting
#
# Note the input, from.old, is just a procmail log file.
#
- makerpm.pl(updated Sat Dec 12 22:33:11 2009)
- #
# Make an rpm out of a tarball.
#
# 30-Jun-2002
# Started making this actually work, although I'm sure there are
# three hundred scripts to do this on Freshmeat.
# 20/06/2003
# Allow --group
# Clean up test area
# use %configure and %makeinstall macros
# 08/11/2003
# Use --eval instead of -E for rpm macro expansion
# 18/02/2006
# Merge in rebuildspec code
#
# * Detects some configure scripts
# * Tries to guess if %setup needs any parameters
# * Tries to populate %doc
# * Tries to locate GPL, Apache, or Artistic License
#
# Fixmes:
# - check for existing specfile and use it for defaults
# - use Archive::Tar to unpack
# - Archive::Zip
# - Compress::Zlib
# - bzip handling also
- mapflow.pl(updated Tue Oct 2 20:47:42 2012)
- #
# Go fishing for map data on Mapflow via myhome.ie
#
- maptest.pl(updated Sun Jan 28 16:45:57 2007)
- # Testing map retrieval
# Last Modified: Waider / 07/04/2003
# April 2003: Did some mucking about with satellite strength and location.
# May 2003: POE conversion
- migrate-xchat.pl(updated Wed Apr 27 09:10:30 2005)
- # migrate your xchat settings from v1 to v2
#
# this contains just enough to work in my environment. In particular,
# server/network flags are incomplete, and various things like
# passwords, eom_cmds and per-server nicks aren't migrated because I
# don't use any of that.
#
# New files are created in .xchat-migrated; you will need to change
# this to .xchat2 or otherwise copy the files to .xchat2 in order to
# have them take effect. Obviously, don't do this while xchat is
# running.
- mimesend.pl(updated Tue Oct 2 20:47:42 2012)
- # Simple script to send the contents of stdin as an
# application/octet-stream MIME block. Parameters are "-s Subject",
# "-n Suggested Name For File" (defaults to "no-name"), and as many
# recipients as you like.
#
# Uses sendmail to do the actual send, so you gotta have that
# configured.
- mkthumbs.pl(updated Fri Jan 4 23:05:17 2002)
- # Part of a bunch of stuff for making thumbnail images, e.g. for a web
# gallery. Despite the name, this is merely a half-assed image viewer
# that allows you to rotate the image 'in place'. In fact, it calls a
# script to do that, too. Jeez. Talk about kludges.
# Waider Feb 2001
- mozpass.pl(updated Thu Apr 12 23:41:20 2007)
- #
# dig out mozilla passwords that I've forgotten
#
- mp3name.pl(updated Wed Jan 12 08:11:04 2011)
- multimsgstr.pl(updated Fri Dec 10 16:49:05 2004)
- #
# combine multiple gettext files into one, OR split such a merged file
# into its component languages.
#
- nmea.pl(updated Thu Sep 6 22:02:28 2001)
- # NMEA parser
# Waider / September 7, 2000
# Need a map?
# http://www.mapquest.com/cgi-bin/ia_find?link=btwn/twn-map_latlong_degrees_form
# grab all the input fields, especially the hidden ones.
# set latdeg latmin latsec lngdeg lngmin lngsec appropriately
# set "Find Map" to "Get Map"
# call ia_find
# look for http://sitemap.mapquest.com/mqmapgend?MQMapGenRequest,
# that's your map.
# 65th character in URL seems to control the magnification:
# *->9->1->l->q->d->g->0->5->h
# cont. region city street
# You can also try:
#
#http://www.mapblast.com/gif?
#
# Location of Icon
# Lat Long Icon
# Icon:
# 1 - circle with dot
# 2 - circle with dot, nontransparent
# 3 - small red circle
# 4 - big red circle
# 5 - cross
#&IC=53.1913:-6.0801:8:
#
# Centre of map
# Lat Long Scale
# Smaller number = closer zoom. seems to zoom up pretty well.
#&CT=53.1913:-6.0801:200000
#
# @ scale = 5000, ( 0.0020 N =~ 130 pixels, 0.0060 W =~ 228 pixels )
# Width/Height of map
#&W=456
#&H=259
#
# Required
# &FAM=mymapblast
- nnevil.pl(updated Sun Jun 9 14:35:36 2002)
- # Beginnings of a program to migrate news-servers. Currently, allows
# you to scan a list of free news servers for a particular group (such
# as, say, alt.sex.leek)
# Waider June 2000
# URLs of interest
# http://www.newzbot.com/sorted-longevity-table.html
- note.pl(updated Sat Apr 14 15:46:41 2007)
- #
# command line interface to knotes via DCOP
#
- ntlm-proxy.pl(updated Thu Sep 6 22:02:28 2001)
- # $Id: proxy.perl,v 1.14 2000/11/03 21:59:03 rcaputo Exp $
# NTLM-aware proxy, since noone else seems to be.
# Waider April 2001
- officebot.pl(updated Fri Sep 30 06:46:35 2005)
- # This is a simple IRC bot based on the example in the POE cookbook
# Things:
# + tracking logins/logouts/aways/last active
# check per-server botnick instead of global one
# how to deal with Not Talking To Myself stuff?
- patchcheck.pl(updated Fri Jan 4 23:05:17 2002)
- # Fetch patches from Sun's public patch server. This is pretty much
# duplicating a lot of the work done by other scripts, but heck, I
# didn't know about them at the time. Sun's own tool is next to
# useless if you don't have a Sunsolve login.
#
# Waider 1998ish
- patchreport.pl(updated Mon Jan 19 15:31:15 2004)
- # This program is intended to parse the patchdiag.xref file downloaded from
# the sunsolve ftp site. It parses the file, and returns a list of patches that
# need to be evalutated for installation.
# @(#) PatchReport_Solaris7 1.14@(#) (Shamblin) 05/01/99 13:48:23
# Modified by Waider <waider@waider.ie> Jan/Feb 2002
# Cleaned up warnings when run under Perl -w
# Debugged contract operation
# Handle patches that aren't zipped (.tar, .tar.Z)
# NB this allows one script to be used for <= Sol 2.6 and >= Sol 7
# Disregard (for now) patches that don't show up in the checksum file
# Optionally MD5-sum the local copy of a patch before fetching a new copy
# of same.
# Enable the -l flag
# Move file fetches to a single function, to centralise option checking
# and diagnostics
# Allow preserving of downloaded xref & CHECKSUM files
# Create -Z dir if it doesn't exist (otherwise files end up in /!)
# Use a sub to do rm -rf
# Added proxy support to non-contract mode
# Allowed non-contract mode to use xref and CHECKSUM files
# Handle missing patches (usu. non-contract mode)
# Cleaned up the fastpatch output
# Smarter default base URL
# If -Q is specified, then imply -q
# Moved file cleanups to an exit handler, so files get cleaned up if
# the program dies
# Added cookie-login support, including redirecting to Sun's choice of
# URL if necessary
# Bumped the version number
#
# TODO
# Better error reporting on fetch failure (auth failed, etc.)
# Is it possible to figure out the correct order to apply patches in,
# to avoid multiple runs?
# Use "patch-not-installed" errors to generate a machine-specific
# exclude file, keyed against the contents file in /var/sadm/install
# (so we know when it's potentially out of date)
# Checksum subroutine
# Clean up: remove unpacked dirs unconditionally
# Clean up: remove old versions of a patch
# Detect if xref or checksum file is trashed
#
# Copyright (c) 1997 by W. Joseph Shamblin. All rights reserved.
# Permission is granted to reproduce and distribute this program
# with the following restrictions:
# 1) This copyright notice and the author identification below
# must be left intact in the program and in any copies.
# 2) Any modifications to the program must be clearly identified
# in the source file.
#
# UNIX Systems Administrator
# Department of Computer Science
# Duke University, Durham, NC
# Phone: 919.660.6582
# Email: wjs@cs.duke.edu
#
#
# THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES,
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. YOU ARE RESPONSIBLE
# FOR ANY DAMAGE THIS MIGHT DO TO YOUR MACHINES!!! IN NO EVENT SHALL THE
# AUTHOR OF THIS PROGRAM BE LIABLE FOR DAMAGE THIS PROGRAM CAUSES.
# Load all needed modules
- phone.pl(updated Tue Oct 2 20:47:42 2012)
- #
# GSM phone toy
#
# actual functionality changes every time I edit it. handle with care.
#
- pkg-to-rpm.pl(updated Fri Jan 4 23:05:17 2002)
- # Make an rpm file out of a pkg, or something. Incomplete.
# Waider Feb 1998
- pktsniffer.pl(updated Tue Jul 15 14:52:30 2003)
- # Not really a packet sniffer, more a proxy that dumps what it
# proxies. Written in the days before I learned to write perl somewhat
# cleanly. This would probably explode if you put in 'use strict'.
# Waider 1996 or 1997
# 13/05/2003 Make sockets reusable and non-lingering
- property.pl(updated Sun Dec 16 12:33:39 2001)
- # property search toy
# Waider, January 2001
- ptoc.pl(updated Thu Sep 6 22:02:29 2001)
- # Nastiness to start converting Pascal into C
# Optimized SOLELY for hacking a particular file. Caveat, uh, Runnor.
# Waider, November 1997
- ptsb-to-ynab.pl(updated Thu Feb 13 21:49:19 2014)
- # quick hack:
# export your PTSB stuff to XLS, then save as csv, then run this over
# it, and you should be able to feed it to YNAB.
- randompokey.pl(updated Sun Dec 16 12:33:39 2001)
- # Create a random pokey cartoon
# Waider May 2000
- randompokeyhack.pl(updated Thu Aug 14 10:59:20 2003)
- # Create a random pokey cartoon for xscreensaver
# Waider August 14 2003
# put this into your .xscreensaver to make it work
# "RandomPokey" randompokeyhack.pl
# and note that the preview won't work in the config front-end
# and also you may be left with /tmp/rpNNNN directories because I'm
# too lazy to do proper cleanup.
- rebuildspec.pl(updated Sun Nov 7 18:02:43 2004)
- # Rebuild an RPM .spec file from a package
# Waider July 25 2000
#
# 03/11/2004 Add changelog
# Check for other packages built from the same source file
# Clean up file listing a little
- rss-fetch.pl(updated Tue Feb 4 22:49:59 2014)
- #
# All the cool kids are doing RSS. ME TOO!
#
- rss.pl(updated Sun Sep 4 23:05:52 2005)
- #
# compile some RSS feeds into a single page
#
- setiposition.pl(updated Thu Mar 25 11:58:21 2004)
- #
# Graph the state of Top 100 SETI folks in Ireland. I'm in red. Gives
# deltas for the last time checked: position change (negative for
# moving up the ranks) and number of units completed. Needs to be
# hacked to cope with what happens when I run off the right-hand side
# of the graph. Also would be nice to cope in the event of me falling
# off the top 100 (continue and find out where I am, I guess)
#
# March 2003: crude hack to left-shift
# colour people doing better than me vs. people doing worse
- sharemon.pl(updated Sun Dec 16 12:33:39 2001)
- # share monitor. suitable for use in FvwmButtons, which is where I use mine.
# Waider August 2000
# Adapted from SrvMon; there's an argument for making this and that
# generic enough that you can do
#
# use Monitor::apm;
# monitors->addmonitor( Monitor::apm->new );
#
# or something.
- smb-clone-acls.pl(updated Tue Oct 2 20:47:42 2012)
- #
# Rough tool to migrate ACLs from a server you've already done a file
# clone on.
#
- smb-clone-printers.pl(updated Tue Oct 2 20:47:42 2012)
- #
# Clone printers from one machine to another.
#
# Expects a credentials file in /root/cred; ignores the user and
# password parameters, but I never bothered cleaning them up.
# Not really necessary since the getdriver call gets the full path anyway
# getdriverdir "Windows 4.0" | "Windows NT x86" | "Windows NT PowerPC" | "Windows Alpha_AXP" | "Windows NT R4000"
- smb-clone-shares.pl(updated Tue Oct 2 20:47:42 2012)
- #
# Clone shares from one machine to another.
#
# uses a credentials file called "cred" in the current dir, ignores
# username and password params.
- sonar.pl(updated Sun Aug 1 12:39:16 2004)
- #
# Audible ping. GNEE!
#
- threader.pl(updated Sun Jan 28 16:57:50 2007)
- # Thread a bunch of mail messages
# Based on jwz's threading algorithm
# Created: Waider August 29 2000
# Modified:
# Waider |2001/03/14| clean up and comment code, add HTMLifyer
# Waider |2001/03/15| tweak threading algorithm, date sorting
# Waider |2001/03/20| adding navigation
# Waider |2001/03/24| discarded nav, trying to improve threading further
# -----------------------------------------------------------------------------
- triggers(updated Mon Sep 19 21:48:09 2005)
- # triggers for officebot -*-CPerl-*-
#
# Waider, May 2004
- unar.pl(updated Tue Oct 2 20:47:42 2012)
- # unpack a .ar file from MM2
#
# File format:
# *** numbers are stored in little-endian format
# offset size (bytes) function
# 0x00000000 4 Magic: "DAVE"
# 0x00000004 4 number of files stored in this archive
# 0x00000008 4 offset to filenames OR size of file header block
# 0x00000012 4 offset to data OR size of filename block
# * lots of zeros here
# 0x00000800 16 file header. there's [offset 4] of these
# * [offset 8] bytes of data
# variable zero-terminated filename
# * [offset 12] bytes of data
# variable possibly deflated file
#
# File header:
# 0x00000000 4 offset from start of filename block to filename
# 0x00000004 4 offset from start of file to data block
# 0x00000008 4 uncompressed size of file
# 0x00000012 4 compressed size of file
#
# if compressed size != uncompressed size, the file data is compressed
# using zlib, maximum compression, WindowBits => -MAX_WBITS (disables
# production of header bytes)
#
- updateme.pl(updated Mon Oct 13 13:49:01 2003)
- # Nastiness to automatically update a redhat box from assorted update sites.
# Then I discovered rpmfind (http://www.rpmfind.net/)
# Waider 1999
#
# 2002 rehack
# * discovered that the RPM package has a neat version comparison tool
# * discovered that it doesn't appear to work any better than what I'd
# written myself. Ptui.
#
# 09/05/2003 Merging all the versions
# 30/05/2003 Use home-made ftp->get mechanism
# 08/06/2003 RPM.pm is defunct. RPM2 appears to be The Good Shit.
- winpopup.pl(updated Thu Sep 6 22:02:29 2001)
- # SMB Messenger
# Waider, January 1998
# Modified January 2001
- workshop-update.pl(updated Wed Nov 21 12:29:51 2012)
- #
# Update the workshop section of the website
#
# - Trawl the source directories
#
# - If there's a file in the workshop that's also in the source
# directory, and the source directory version is newer, copy it
# over. This allows me full control over what's in the website
# while at the same time keeping it up-to-date
#
# - Also generate an entry on index.html for the file
#
# September 2002:
# Sort the files by filename
# 08/03/2004 Add timestamp to file listing
# 16/11/2004 Woo, google adsense
- worktimer.pl(updated Fri Mar 17 17:53:39 2006)
- #
# Timer to keep track of how long I'm working on something
# Waider February 19, 2002
#
# Waider January 26 2002: Converted to Gtk, got stuck on OptionMenu. Docs, dammit.
- xchat-hacks.pl(updated Tue Oct 2 20:47:42 2012)
- # XChat hooks and hacks
#
- xmms-frob.pl(updated Tue Oct 2 20:47:42 2012)
- #
# Tooling with XMMS
#
# toys: lyrics!
# http://www.lyrics007.com/Sugababes%20Lyrics/Hole%20In%20The%20Head%20Lyrics.html
#
Waider |
Ugh. Did I write that? |