#!/usr/bin/perl # Filename: tinyURL # Author: David Ljung Madison # See License: http://MarginalHacks.com/License # Description: Creates a tinyURL for a given URL use strict; ################################################## # Setup the variables ################################################## my $PROGNAME = $0; $PROGNAME =~ s|.*/||; # Pick one my $GET = "GET -H 'user-agent: Mozilla/5.0'"; my $LYNX = "lynx -source"; my $TINY = 'http://tinyurl.com//create.php?url='; my $GET_URL = $LYNX; #my $GET_URL = $GET; ################################################## # Usage ################################################## sub usage { my $msg; foreach $msg (@_) { print "ERROR: $msg\n"; } print "\n"; print "Usage:\t$PROGNAME [-d] \n"; print "\tCreates a tinyURL for a given URL\n"; print "\t-d\tSet debug mode\n"; print "\n"; exit -1; } sub parse_args { my (@urls); my $get = $GET_URL; while ($#ARGV>=0) { my $arg=shift(@ARGV); if ($arg =~ /^-h$/) { usage(); } if ($arg =~ /^-d$/) { $MAIN::DEBUG=1; next; } if ($arg =~ /^-/) { usage("Unknown option: $arg"); } push(@urls,$arg); } usage("No files/URLs defined") unless @urls; @urls; } sub tinyURL { my ($url) = @_; open(URL,"$GET_URL \Q$TINY$url\E |") || usage("Can't run [$GET]"); while () { return $1 if m|(http://tinyurl.com/[0-9a-z]+)\b|; } close URL; usage("Couldn't find tinyURL?"); } ################################################## # Main code ################################################## sub main { my (@urls) = parse_args(); foreach my $url ( @urls ) { my $tiny = tinyURL($url); print "$url:\n"; print " $tiny\n"; } } main();