tytso@athena.mit.edu (Theodore Y. Ts'o) (02/11/90)
A user at my site came up with this one: when executed as follows:
echo foo bar | /tmp/perl.test
if you run it on a Vax, you get:
input=``foo bar''
line=``foo bar'', quoted=``''
i_output = foo bar
line=``foo bar'', quoted=``''
output=``'' <=== Huh?
input=``foo bar''
...and if you run it on an if you run it on an IBM RT/PC (running BSD
4.3 + Wisc. NFS) you get:
input=``foo bar''
line=``foo bar'', quoted=``''
i_output = foo bar
line=``foo bar'', quoted=``''
output=``foo bar''
input=``foo bar''
The program follows below:
-------
#!/mit/watchmaker/@sys/perl
sub proca {
local($line,$quoted) = @_,"";
return($line);
}
sub procb {
local($line,$quoted) = @_,"";
print "\tline=``",$line; print "'', quoted=``",$quoted,"''\n";
# print "\tline=``",$line,"'', quoted=``",$quoted,"''\n";
$quoted = $quoted.(do proca($line));
return($quoted);
}
while(<>) {
chop;
print "input=``",$_,"''\n";
$i = do procb($_);
print "i_output = $i\n";
print "output=``",do procb($_),"''\n";
print "input=``",$_,"''\n";
}
------
The interesting thing is that if you uncomment out the print statement, then
the output on the vax is the same as on the IBM RT/PC. Does this look familiar
to anyone?
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Theodore Ts'o bloom-beacon!mit-athena!tytso
3 Ames St., Cambridge, MA 02139 tytso@athena.mit.edu
Everybody's playing the game, but nobody's rules are the same!