A couple minor points. First, "! -z" is more commonly known as "-n". Second, if you're running perl from the commandline anyway, use lib is usually called -I, while all other uses are called -M. And rather than dealing with lots of annoying quotes, just pass in your parameters.
figlet()
{
local que=$1
local fu=timesofl
if [ -n "$2" ]
then
local fu=$2
fi;
if [ -n "$que" ]
then
perl -I$HOME/path/to/installed/FIGlet.pm -MText::FIGlet -e 'pr
+int Text::FIGlet->new(-f=>$ARGV[0])->figify(-A=>$ARGV[1])' "$fu" "$qu
+e"
fi;
}
Unlike in perl where quoting a variable is a waste of time, in shell it's imperative to keep any embedded spaces unchanged. Having moved your variables from inside the perl code to purely in shell, I need to keep the quotes - but I can get rid of leaning toothpick syndrome (LTS). And then I can switch your double quotes to single quotes and now I think the whole command is much easier to look at. Personally, I would have made the whole thing just a perl script to begin with:
#!/usr/bin/perl
use lib "..."; # probably not really needed.
use Text::FIGlet;
my $figlet = Text::FIGlet->new(-f => $ARGV[1] || 'timesofl');
print $figlet->figify(-A => shift);
Of course, I'd add more comments and whatever. ;-)
|