1use strict; 2use warnings; 3package Devel::REPL::Plugin::DumpHistory; 4# ABSTRACT: Plugin for Devel::REPL to save or print the history 5 6our $VERSION = '1.003028'; 7 8use Devel::REPL::Plugin; 9use namespace::autoclean; 10 11## Seems to be a sequence issue with requires 12# requires qw{ history }; 13 14around 'read' => sub { 15 my $orig = shift; 16 my ($self, @args) = @_; 17 18 my $line = $self->$orig(@args); 19 if (defined $line) { 20 if ($line =~ m/^:dump ?(.*)$/) { 21 my $file = $1; 22 $self->print_history($file); 23 return ''; 24 } 25 } 26 return $line; 27}; 28 29sub print_history { 30 my ( $self, $file ) = @_; 31 32 if ($file) { 33 open( my $fd, ">>", $file ) 34 or do { warn "Couldn't open '$file': $!\n"; return; }; 35 print $fd "$_\n" for ( @{ $self->history } ); 36 $self->print( sprintf "Dumped %d history lines to '$file'\n", 37 scalar @{ $self->history } ); 38 close $fd; 39 } else { 40 $self->print("$_\n") for ( @{ $self->history } ); 41 } 42 return 1; 43} 44 451; 46 47__END__ 48 49=pod 50 51=encoding UTF-8 52 53=head1 NAME 54 55Devel::REPL::Plugin::DumpHistory - Plugin for Devel::REPL to save or print the history 56 57=head1 VERSION 58 59version 1.003028 60 61=head1 SYNOPSIS 62 63 use Devel::REPL; 64 65 my $repl = Devel::REPL->new; 66 $repl->load_plugin('LexEnv'); 67 $repl->load_plugin('History'); 68 $repl->load_plugin('DumpHistory'); 69 $repl->run; 70 71=head1 DESCRIPTION 72 73Plugin that adds the C<:dump> and C<:dump file_name> commands to the 74repl which will print the history to STDOUT or append the history to the 75file given. 76 77=head1 SEE ALSO 78 79C<Devel::REPL> 80 81=head1 SUPPORT 82 83Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Devel-REPL> 84(or L<bug-Devel-REPL@rt.cpan.org|mailto:bug-Devel-REPL@rt.cpan.org>). 85 86There is also an irc channel available for users of this distribution, at 87L<C<#devel> on C<irc.perl.org>|irc://irc.perl.org/#devel-repl>. 88 89=head1 AUTHOR 90 91mgrimes, E<lt>mgrimes at cpan dot org<gt> 92 93=head1 COPYRIGHT AND LICENSE 94 95Copyright (C) 2007 by mgrimes 96 97This library is free software; you can redistribute it and/or modify 98it under the same terms as Perl itself, either Perl version 5.8.2 or, 99at your option, any later version of Perl 5 you may have available. 100 101=cut 102