App::Addex::Output::ToFile - base class for output plugins that write to files


App-Addex documentation Contained in the App-Addex distribution.

Index


Code Index:

NAME

Top

App::Addex::Output::ToFile - base class for output plugins that write to files

VERSION

Top

version 0.022

DESCRIPTION

Top

This is a base class for output plugins that will write to files. The "filename" configuration parameter must be given, and must be the name of a file to which the user can write.

METHODS

Top

new

  my $addex = App::Addex::Output::Subclass->new(\%arg);

This method returns a new outputter. It should be subclassed to provide a process_entry method.

Valid arguments are:

  filename - the file to which to write configuration (required)

output

  $outputter->output($string);

This method appends the given string to the output file, adding a newline.

AUTHOR

Top

Ricardo SIGNES, <rjbs@cpan.org>

BUGS

Top

Please report any bugs or feature requests through the web interface at http://rt.cpan.org. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

COPYRIGHT

Top


App-Addex documentation Contained in the App-Addex distribution.
#!/usr/bin/perl
use strict;
use warnings;

package App::Addex::Output::ToFile;
use App::Addex::Output;
BEGIN { our @ISA = 'App::Addex::Output' }

use Carp ();

our $VERSION = '0.022';

sub new {
  my ($class, $arg) = @_;

  Carp::croak "no filename argument given for $class" unless $arg->{filename};

  my $self = $class->SUPER::new;

  open my $fh, '>', $arg->{filename}
    or Carp::croak "couldn't open output file $arg->{filename}: $!";

  binmode($fh, ':encoding(utf8)');

  $self->{fh} = $fh;

  return $self;
}

sub output {
  my ($self, $line) = @_;

  print { $self->{fh} } "$line\n"
    or Carp::croak "couldn't write to output file: $!";
}

sub finalize {
  # We'll just delete this ref and let garbage collection cause closing if
  # needed. -- rjbs, 2007-11-05
  delete $_[0]->{fh};
}

1;