[comp.lang.perl] brevity is the soul of job security

tchrist@convex.com (Tom Christiansen) (11/22/90)

Here are two functionally equivalent versions of a program
to remove something from the sendmail queue.  I notice that 
the short version is MUCH harder to highball, but I find its
style coming out of my keyboard much more often.  

What do you guys think of this?

#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
#	rmmq.short
#	rmmq.long
# This archive created: Wed Nov 21 14:53:27 1990
export PATH; PATH=/bin:/usr/bin:$PATH
echo shar: "extracting 'rmmq.short'" '(721 characters)'
if test -f 'rmmq.short'
then
	echo shar: "will not over-write existing file 'rmmq.short'"
else
sed 's/^	X//' << \SHAR_EOF > 'rmmq.short'
	X#!/bin/sh -- # summon the perl monster
	X
	Xeval "exec perl $0 $*"
	X    if $running_under_some_shell_and_would_really_prefer_to_use_perl;
	X
	X($ARGV[0] eq '-f') && ($force_flag++, shift);
	X$MQUEUE = '/usr/spool/mqueue';
	Xchdir $MQUEUE || die "can't cd to $MQUEUE: $!, bailing out";
	X-w $MQUEUE || die "can't unlink from $MQUEUE, bailing out";
	X
	Xfor (@ARGV) {
	X    /^(\d+)$/ && ($_ = 'AA' . $1);
	X    /^AA/ || (warn "$0: ingoring funny mail id: $_\n", next);
	X    ((@files = <?f$_>)) || (warn "$0: no $_ mail request\n", next);
	X    $force_flag || grep(/^lf/,@files) 
	X	    || (warn "$0: request $_ in progress\n", next);
	X    for $file (@files) {
	X	print STDERR unlink($file) 
	X			 ? "$file\n"
	X			 : "$0: can't unlink $file: $!\n";
	X    } 
	X}
SHAR_EOF
if test 721 -ne "`wc -c < 'rmmq.short'`"
then
	echo shar: "error transmitting 'rmmq.short'" '(should have been 721 characters)'
fi
chmod 775 'rmmq.short'
fi
echo shar: "extracting 'rmmq.long'" '(822 characters)'
if test -f 'rmmq.long'
then
	echo shar: "will not over-write existing file 'rmmq.long'"
else
sed 's/^	X//' << \SHAR_EOF > 'rmmq.long'
	X#!/bin/sh -- # summon the perl monster
	X
	Xeval "exec perl $0 $@" 
	X    if $running_under_some_shell_and_would_really_prefer_to_call_perl;
	X
	X$MQUEUE = '/usr/spool/mqueue';
	X
	Xif ($ARGV[0] eq '-f') {
	X    $force_flag++;
	X    shift;
	X} 
	X
	Xif (!chdir $MQUEUE) { 
	X    die "can't cd to $MQUEUE: $!, bailing out";
	X}
	Xif (!-w $MQUEUE) {
	X    die "can't unlink from $MQUEUE, bailing out";
	X}
	X
	Xfor (@ARGV) {
	X    if (/^(\d+)$/) {
	X	$_ = 'AA' . $1;
	X    }
	X    if (!/^AA/) {
	X	warn "$0: ingoring funny mail id: $_\n";
	X	next;
	X    }
	X    if (! (@files = <?f$_>)) {
	X	warn "$0: no $_ mail request\n";
	X	next;
	X    }
	X    if (!$force_flag && grep(/^lf/,@files)) {
	X	warn "$0: request $_ in progress\n";
	X	next;
	X    } 
	X    for $file (@files) {
	X	if (unlink($file)) {
	X	    print STDERR $file, "\n";
	X	} else {
	X	    warn "$0: can't unlink $file: $!\n";
	X	} 
	X    } 
	X} 
SHAR_EOF
if test 822 -ne "`wc -c < 'rmmq.long'`"
then
	echo shar: "error transmitting 'rmmq.long'" '(should have been 822 characters)'
fi
chmod 775 'rmmq.long'
fi
exit 0
#	End of shell archive

lwall@jpl-devvax.JPL.NASA.GOV (Larry Wall) (11/25/90)

In article <109125@convex.convex.com> tchrist@convex.com (Tom Christiansen) writes:
: Here are two functionally equivalent versions of a program
: to remove something from the sendmail queue.  I notice that 
: the short version is MUCH harder to highball, but I find its
: style coming out of my keyboard much more often.  
: 
: What do you guys think of this?

I think they're both lovely.  But who cares what I think?   :-)

Larry