in reply to Re: $#="%c"; possible bug
in thread $#="%c"; possible bug

ord('k') is 107 so it should print 107, and the first statement should not affect it.

Is $# really broken for eons? Where's that from? See my reply for the other post Re: Re: $#="%c"; possible bug.

Update: effect->affect

Replies are listed 'Best First'.
Re: $#="%c"; possible bug
by Abigail-II (Bishop) on Feb 21, 2004 at 00:17 UTC
    ord('k') is 107 so it should print 107
    Uhm, no.
    the first statement should not effect it.
    Yes, it should. To quote myself: Setting $# sets the output format for printed numbers. 107 is still a number in my book.

    From man perlvar:

    $# The output format for printed numbers. This vari­ able is a half-hearted attempt to emulate awk's OFMT variable. There are times, however, when awk and Perl have differing notions of what counts as numeric. The initial value is "%.ng", where n is the value of the macro DBL_DIG from your system's float.h. This is different from awk's default OFMT setting of "%.6g", so you need to set $# explicitly to get awk's value. (Mnemonic: # is the number sign.) Use of $# is deprecated.

    Is $# really broken for eons? Where's that from?
    Yes it is. Your code is proof.

    Abigail

      Good point. Now I see. I somehow thought $# only affects floating-point values. It seems that I didn't read the doc carefully enough.

      And it seems that $# uses the system's builtin sprintf, not perl's.