marc@athena.mit.edu (08/09/90)
Possible Bug 1:
This program:
#!/mit/watchmaker/@sys/perl
sub foo {
local($bar);
$_[0] = "frep";
print "\$bar = \"$bar\"\n";
}
$bar = "string";
&foo($bar);
print "\$bar = \"$bar\"\n";
prints:
$bar = "frep"
$bar = "string"
This is, at best, confusing. What is it doing, and is it a bug?
What's it supposed to do?
Possible bug 2:
perl man page (pl 18):
sprintf(FORMAT,LIST)
Returns a string formatted by the usual printf con-
ventions. The * character is not supported.
printf/sprintf man page (BSD 4.3, possibly enhanced locally)
Each conversion specification is introduced by the character
``%''. The remainder of the conversion specification
includes in the following order:
+ Zero or more of the following flags:
...
- A blank which specifies that a blank is to precede
any non-negative value in d, e, E, f, g, or G
conversion.
C program:
main()
{
printf("\"% f\"\n",3.1416);
}
C output:
" 3.141600"
perl script:
#!/mit/watchmaker/@sys/perl
printf("\"% f\"\n",3.1416);
perl output:
""
f"
The C and perl outputs obviously do not match. In any case, I have no
clue how the perl output comes from the script I gave it. Again,
what's happening? I'm pretty sure that this is a bug, and that the C
and perl outputs should match.
Marc