App-sh2p
view release on metacpan or search on metacpan
lib/App/sh2p.pod view on Meta::CPAN
process by automating much of the tedium.
It can be run by either supplying the input and output file names, or by supplying
a list of input file names and an output directory, which must be the right-most
parameter and must already exist. If hyphen ('-') is supplied for either input or output file name
then STDIN is read or STDOUT written to (not valid as a directory name).
The output file will be overwritten if it exists.
If the directory output form is taken then an output file name is generated from the
input file name, with '.pl' appended (any existing 'extension' will be removed). If
this file already exists then the user will be prompted for permission to overwrite it,
unless the -f (force) option is given.
The generated code will:
Have a #! line generated from $Config{'perlpath'}.
use integer;
The POSIX shell only supports integer arithmetic, this may be supressed with the -i option
lib/App/sh2p/Builtins.pm view on Meta::CPAN
App::sh2p::Handlers::Handle_close_redirection('w') if $redirection;
return $ntok;
} # do_print
########################################################
sub do_read {
my %args;
my $prompt = 'undef';
my $ntok;
local @ARGV;
# First argument is 'read'
shift @_;
$ntok++;
# Find end of statement
for my $arg (@_) {
last if is_break($arg) || $arg eq ';'; # Inserted in sh2p loop
push @ARGV, $arg;
$ntok++;
}
getopts ('p:rsu:nAa', \%args);
if (exists $args{p} && which_shell() eq 'bash') {
# Bash syntax for prompt
$prompt = $args{p}
}
elsif ($ARGV[0] =~ /^(\w*)\?(.*)$/) { # ksh syntax for prompt
$ARGV[0] = $1 || 'REPLY';
$prompt = $2;
}
# Default variable
@ARGV = ('REPLY') if ! @ARGV;
# Add $ prefix to variable names
# Do I need to pre-define them?
for (my $i = 0; $i < @ARGV; $i++) {
if (exists $args{a} || exists $args{A}) {
lib/App/sh2p/Builtins.pm view on Meta::CPAN
return $ntok;
}
my $heredoc = App::sh2p::Here::get_last_here_doc();
if (defined $heredoc) {
my $filename = App::sh2p::Here::gen_filename($heredoc);
if (Register_variable('$IFS', '$')) {
pre_out "my \$IFS=".get_special_var('IFS').";\n";
}
iout "sh2p_read_from_file ('$filename', \"\$IFS\", $prompt, ".
'\\'.(join ',\\', @ARGV).")";
App::sh2p::Here::store_sh2p_here_subs();
}
else {
if (exists $args{u} && $args{u} ne 0) {
my $fd = $args{u};
iout "$ARGV[0] = <\$sh_handle$fd>";
if (@ARGV > 1) {
lib/App/sh2p/Builtins.pm view on Meta::CPAN
}
}
else {
if (Register_variable('$IFS', '$')) {
pre_out "my \$IFS=".get_special_var('IFS').";\n";
}
my $filename = App::sh2p::Handlers::Query_redirection('r');
if (defined $filename) {
iout 'sh2p_read_from_handle ($sh2p_handle,"$IFS",'."$prompt,".
'\\'.(join ',\\', @ARGV).")";
}
else {
iout "sh2p_read_from_stdin (\"\$IFS\", $prompt, ".
'\\'.(join ',\\', @ARGV).")";
}
if (!App::sh2p::Compound::get_context()) {
out ";\n";
App::sh2p::Handlers::Handle_close_redirection('r');
}
App::sh2p::Here::store_sh2p_here_subs();
}
lib/App/sh2p/Here.pm view on Meta::CPAN
# sh2p_read_from_handle
# Arguments:
# 1. Handle
# 2. Value of $IFS
# 3. Prompt string
# 4. List of scalar references
# Any may be undef
sub sh2p_read_from_handle {
my ($handle, $sh2p_IFS, $prompt, @refs) = @_;
return 0 if eof($handle);
if (!defined $sh2p_IFS) {
$sh2p_IFS = " \t\n";
}
if (defined $prompt) {
print $prompt
}
my $line = <$handle>;
my $sh2p_REPLY;
chomp $line;
my (@vars) = split /[$sh2p_IFS]+/, $line;
my $i;
( run in 0.639 second using v1.01-cache-2.11-cpan-0b5f733616e )