package filehandler;
use strict;
use warnings;
#new
sub new
{
my($class, $filename) = @_;
my $self ={
_filename =>$filename
};
my @ss;
$self->{_dealedStringArray}= \@ss;
return bless($self,$class);
}
#really open file
sub getDealedStrings
{
my($self) = @_;
open (FILEHANDLE,$self->{_filename})|| die("can't open file: $self->{_filename}");
#start to deal string line by line!
while(<FILEHANDLE>)
{
$self->handleLine($_);
}
close (FILEHANDLE);
return @{$self->{_dealedStringArray}} ;
}
#deal string line by line
sub handleLine
{
my ($self,$linetext) = @_;
my @result = $self->convert($linetext);
if($result[0]==1)
{
$self->_addstring($result[1]);
}
}
#You can write a override function in sub class
sub convert
{
my ($self,$old) = @_;
$old = "CONVERTED STRING:" .$old;
return (1,$old);
}
#add the dealed string into a array.
sub _addstring
{
my ($self,$linetext) = @_;
my @a =@{ $self->{_dealedStringArray}};
push(@a, $linetext."\n");
@{$self->{_dealedStringArray}} = @a;
}
#output converted file
sub exportToFile
{
my($self,$newFileName) = @_;
open FILEHANDLE ,">$newFileName" || die("can't create file : $newFileName");
for(my $i=0;$i<@{$self->{_dealedStringArray}};$i++)
{
print FILEHANDLE "${$self->{_dealedStringArray}}[$i]";
}
close FILEHANDLE;
}
1; 这里不在具体讲Perl 对象编程的概念,大家可以变参考背景知识里面推荐的O'Reilly - Advanced Perl Programming,边看本实例,一定会有所心得。