This didn’t go very far because what was going to get done in Perl was not to be ultimately.
Handy subroutine for Perl (at the point where I am now anyway):
sub println { my( @args ) = @_; # pick up subroutine arguments my $arg; foreach my $arg in (@args) # arguments treated as a list/array { # hmmm... braces required anyway!? print "$arg"; # double quotes ensure "interpolation" } print "\n"; # this is the "ln" part of println }
Here’s another one:
sub askyesno { my( $prompt ) = @_; my $output = undef; # hey, it’s interpretive, so who cares? print "$prompt"; do { print "(yes/no) "; # (insist: but we’ll also tolerate y/n) $output = <STDIN>; chomp $output; # stdin also leaves the \n on $output } until ($output eq "yes" || $output eq "n" || $output eq "no" || $output eq "n"); return ($output eq "y") ? "yes" : ($output eq "n") ? "no" : $output; } my $output = askyesno("Are you having fun yet? "); print "$output\n";
Sample response is given here...
$ perl -e '$! = 16;print "$!\n"' > Device or resource busy $ perl -mErrno -e '$!=16; print grep($!{$_}, keys(%!)), ": $!\n";' > EBUSY: Device or resource busy # search and replace across a bunch of files... $ perl -pi -e 's,pattern,replacement,' * --------------------- some-file.pl ----------------------------------------- #!/bin/env perl use Errno; die("Usage: errno \n") unless @ARGV == 1; $!=$ARGV[0]; print grep($!{$_}, keys(%!)), ": $!\n"; ----------------------------------------------------------------------------
It's a whole world of Perl out there. There's something called CPAN which is a sort of "underneath the belly" thing for maintaining Perl modules. (Bugzilla is based partly on Perl and such modules.) Installing Bugzilla, I had borked the (required) installation/configuration of CPAN, I knew it, but I couldn't figure out how to unbork it. I just did (mostly).
A big problem is that Perl/CPAN is (are) still stuck in the world of ftp. I don't know anyone who uses ftp any more on Linux. We just no longer really do that. I'm not yet certain fixing what I fixed here solves that, but I was able to do some CPAN installs cleanly. This is a good link:
http://www.troubleshooters.com/codecorn/littperl/perlcpan.htm
Things to know:
$ perl -MCPAN -e shell
cpan[1]> clean
Then, start over and take the defaults including the big one in letting the thing make all the set up on its own. You will have to help it decide on a list of mirrors at one point. Don't forget to commit changes:
cpan[2] o conf commit
After cleaning up and starting over, I was able to install YAML, the failure of which prompted me to dig into this in the first place.
cpan[3]> install YAML
For one thing, as I was on Ubuntu server and hadn't installed them, I had to get all the build tools (make et al.) since these are used by...
$ /usr/bin/perl install-module.pl --all
...to work the installation. Set this up using:
$ apt-get install build-essential
I still had some nasty things going on due probably to having tried to do this stuff from root. I'll update this as soon as any make real problems that I have to resolve.