Karl: > wpd: ... > > #!/usr/bin/perl -w > > my @array = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11); > > print length(@array), "\n"; ... > > Maybe things have changed since then, but I spent way too much time > > being confused by this.
If you really want to understand why this prints 2, look at this: $ perl -e 'print length(1,2), "\n";' Too many arguments for length at -e line 1, near "2)" Execution of -e aborted due to compilation errors. $ This means the length wants just one argument. Now, @array is either the array of numbers above, or @array is the number of elements of the array, i.e. 11. It depend on the context, if it is "vector" or "scalar" context. Since length only wants one argument, @array is treated as a scalar, which is 11, and the length of the string "11" is 2. If you want to print out the number of elements in @array, you have to force it to a scalar context as in: print scalar(@array), "\n"; or print @array+0, "\n"; > Badly spent time, check the man page. > > If you don't like perl/scheme/pythonn/ruby/c/whatever --- > don't use it, but stop complaining about it. Sorry for being a little harsh. Regards, /Karl Hammar ----------------------------------------------------------------------- Aspö Data Lilla Aspö 148 S-742 94 Östhammar Sweden +46 173 140 57 _______________________________________________ geda-user mailing list geda-user@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-user