HEX
Server: Apache
System: Linux vps-cdc32557.vps.ovh.ca 5.15.0-156-generic #166-Ubuntu SMP Sat Aug 9 00:02:46 UTC 2025 x86_64
User: hanode (1017)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/share/doc/libmime-lite-perl/examples/mime_gif
#!/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__