1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
#!/usr/bin/perl -w
=head1 NAME
mime_gif - encode a single gif by reading data different ways
=head1 SYNOPSIS
Usage:
mime_gif /path/to/some.gif
=head1 DESCRIPTION
Encode a multipart message where each part contains the same GIF
file, but where the GIF file has been read-in in different ways.
The subject line of each part will tell you how the GIF was read.
=head1 AUTHOR
Eryq, eryq@zeegee.com
=cut
use strict;
use MIME::Lite;
use Getopt::Std;
#------------------------------
# main
#------------------------------
sub main {
my %opts;
### Get options:
getopts('', \%opts) or die "usage error\n";
my $gifpath = $ARGV[0] || die "missing path to GIF\n";
### Create message:
my $msg = MIME::Lite->new(To => 'me@somewhere.com',
Subject => 'GIF test',
Type => 'multipart/mixed');
### Read data:
open IN, "<$gifpath" or die "open $gifpath: $!\n";
binmode IN;
my @data;
local $_ = '';
while (read(IN, $_, 1024)) {
push @data, $_;
}
close IN;
### Direct path:
if (1) {
my $path = $gifpath;
$msg->attach(Subject => "Read path directly",
Path => $path,
Type => 'image/gif');
}
### Cat (Unix only):
if (1) {
my $path = "cat $gifpath |";
$msg->attach(Subject => "Cat path to pipe, and read that",
Path => $path,
Type => 'image/gif');
}
### Array:
if (1) {
$msg->attach(Subject => "Read data as array",
Data => \@data,
Type => 'image/gif');
}
### String:
if (1) {
$msg->attach(Subject => "Read data as string",
Data => join('', @data),
Type => 'image/gif');
}
### Output:
$msg->print(\*STDOUT);
}
exit(&main ? 0 : -1);
1;
__END__
|