#!/usr/bin/perl use strict; use Clipboard; my %methods = ( -html => sub { require CGI; CGI::escapeHTML($_[0]) }, -uri => sub { require URI::Escape; URI::Escape::uri_escape($_[0]) }, ); my $result = filter(($ARGV[0]), Clipboard->paste); Clipboard->copy($result); print $result, "\n... is now in the clipboard.\n"; sub filter { my ($method, $data) = @_; if (exists $methods{$method}) { return $methods{$method}->($data); } else { require IPC::Run; my $cmd = [ split /\s+/, $method ]; my $ret; IPC::Run::run($cmd, \$data, \$ret); return $ret; } } =head1 NAME clipfilter - various conversions for your clipboard data =head1 USAGE # copy some stuff $ clipfilter -html # paste, with html entities substituted in # or URI-escaping: $ clipfilter -uri # or pipe through an arbitrary program: $ clipfilter tac # Note: currently, it splits that input on space and sends it to IPC::Run =head1 MOTIVATION There are too many paste/do-something/copy dances in the world. =head1 AUTHOR Ryan King =head1 COPYRIGHT Copyright (c) 2005. Ryan King. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See L