Debian lenny version packages
[pkg-perl] / deb-src / libio-stringy-perl / io-stringy-2.110 / contrib / Clever.pm
1 package IO::Clever;
2 require 5.005_03;
3 use strict;
4 use vars qw($VERSION @ISA);
5 @ISA = qw(IO::String);
6 $VERSION = "1.01";
7
8 # ChangeLog:
9 # 1999-07-21-02:06:47 Uri Guttman told me a critical fix: 
10 #       $fp->input_record_separator is _Global_; local($/) is safer
11
12 my(%params);
13
14 sub new {
15         my $class = shift;
16         return IO::File->new(@_) unless $_[0] =~ /^>/;
17         my $self = bless IO::String->new(), ref($class) || $class;
18         $params{$self} = [ @_ ];
19         $self;
20 }
21
22 sub DESTROY {
23         my($self) = @_;
24         my $filename = $params{$self}->[0];
25         return unless $filename =~ s/^>//;
26         my($new) = ${$self->string_ref};
27         if (-f $filename) {
28                 my $fp = IO::File->new("<$filename") || die "$0: $filename: $!\n";
29                 local ($/);
30                 return if $new eq $fp->getline;
31         }
32         IO::File->new(@{$params{$self}})->print($new);
33         delete $params{$self};
34 }
35
36 1;