X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FDevel-REPL.git;a=blobdiff_plain;f=lib%2FDevel%2FREPL%2FScript.pm;h=aab0cc2f9da7ef43c9e6c6986ea31df523c1e7a4;hp=bf36136466ef8f2e09a210fbe7218fbf03b8a962;hb=6631e15ccd2313ff350fd9bfa44c1ccdbac77100;hpb=3bcf4eb89e6fd4f7ae37fae50255a2b09e655677 diff --git a/lib/Devel/REPL/Script.pm b/lib/Devel/REPL/Script.pm index bf36136..aab0cc2 100644 --- a/lib/Devel/REPL/Script.pm +++ b/lib/Devel/REPL/Script.pm @@ -45,17 +45,30 @@ sub load_rcfile { $rc_file = File::Spec->catfile(File::HomeDir->my_home, '.re.pl', $rc_file); } - if (-r $rc_file) { - open RCFILE, '<', $rc_file || die "Couldn't open ${rc_file}: $!"; - my $rc_data; - { local $/; $rc_data = ; } - close RCFILE; # Don't care if this fails - $self->eval_rcdata($rc_data); - warn "Error executing rc file ${rc_file}: $@\n" if $@; + $self->apply_script($rc_file); +} + +sub apply_script { + my ($self, $script, $warn_on_unreadable) = @_; + + if (!-e $script) { + warn "File '$script' does not exist" if $warn_on_unreadable; + return; } + elsif (!-r _) { + warn "File '$script' is unreadable" if $warn_on_unreadable; + return; + } + + open RCFILE, '<', $script or die "Couldn't open ${script}: $!"; + my $rc_data; + { local $/; $rc_data = ; } + close RCFILE; # Don't care if this fails + $self->eval_script($rc_data); + warn "Error executing script ${script}: $@\n" if $@; } -sub eval_rcdata { +sub eval_script { my ($self, $data) = @_; local $CURRENT_SCRIPT = $self; $self->_repl->eval($data);