Clever.pm   [plain text]


package IO::Clever;
require 5.005_03;
use strict;
use vars qw($VERSION @ISA);
@ISA = qw(IO::String);
$VERSION = "1.01";

# ChangeLog:
# 1999-07-21-02:06:47 Uri Guttman told me a critical fix: 
#	$fp->input_record_separator is _Global_; local($/) is safer

my(%params);

sub new {
	my $class = shift;
	return IO::File->new(@_) unless $_[0] =~ /^>/;
	my $self = bless IO::String->new(), ref($class) || $class;
	$params{$self} = [ @_ ];
	$self;
}

sub DESTROY {
	my($self) = @_;
	my $filename = $params{$self}->[0];
	return unless $filename =~ s/^>//;
	my($new) = ${$self->string_ref};
	if (-f $filename) {
		my $fp = IO::File->new("<$filename") || die "$0: $filename: $!\n";
		local ($/);
		return if $new eq $fp->getline;
	}
	IO::File->new(@{$params{$self}})->print($new);
	delete $params{$self};
}

1;