#!/usr/bin/perl -w # (C) 2003-2007 Willem Jan Hengeveld # Web: http://www.xs4all.nl/~itsme/ # http://wiki.xda-developers.com/ # # $Id: base64 1858 2008-06-09 13:33:01Z itsme $ # use strict; # this script base64 encodes or decodes stdin. use MIME::Base64; use Getopt::Long; my $direction="encode"; my $binarymode= 0; my $separatelines= 0; # keep line structure of input. GetOptions( "u|decode" => sub { $direction="decode"; }, "e|encode" => sub { $direction="encode"; }, "b" => \$binarymode, "l" => \$separatelines, ) or die "invalid option $! - $@"; if ($direction eq "encode") { if ($binarymode) { binmode STDIN; } do_encode(); } elsif ($direction eq "decode") { if ($binarymode) { binmode STDOUT; } do_decode(); } else { die "must specify either '-u' or '-e'\n"; } exit(0); sub do_encode { $/=undef; while(<>) { print encode_base64($_); } } sub do_decode { while(<>) { chomp; for my $word (split /(\s+)/) { if ($word =~ /\s/) { print $word if ($separatelines); } else { print decode_base64($word); } } } }