package Image::XBin::Util; =head1 NAME Image::XBin::Util - Utility functions =head1 SYNOPSIS use Image::XBin::Util; my $file = create_io_object( %options ); =cut use base qw( Exporter ); use strict; use warnings; use Carp; use IO::File; use IO::String; our @EXPORT = qw( create_io_object ); our $VERSION = '0.06'; =head1 METHODS =head2 create_io_object( %options ) Generates an IO object. Uses IO::File or IO::String. =cut sub create_io_object { my %options = %{ $_[ 0 ] }; my $perms = $_[ 1 ]; my $file; # use appropriate IO object for what we get in if( exists $options{ file } ) { $file = IO::File->new( $options{ file }, $perms ) or croak "$!"; } elsif( exists $options{ string } ) { $file = IO::String->new( $options{ string } ); } elsif( exists $options{ handle } ) { $file = $options{ handle }; } else { croak( "No valid read type. Must be one of 'file', 'string' or 'handle'." ); } binmode( $file ); return $file; } =head1 AUTHOR =over 4 =item * Brian Cassidy Ebricas@cpan.orgE =back =head1 COPYRIGHT AND LICENSE Copyright 2003-2009 by Brian Cassidy This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;