in reply to can i pass an array as an argument during a sub routine call???

It's your use of prototypes that is burning you here. Your prototype of $$ means that both parameters are evaluated in scalar context and your array is therefore converted to the number of elements it contains (which is not what you want).

Prototypes in Perl don't do what most people expect them to do. They are generally more of a hindrance than a help. Unless you have one of the rare cases where prototypes are the only way to achieve a certain effect (like, for example, producing a function that works like "push") then they are best avoided. Remove the prototype from your subroutine and it will work as you expect.

--
<http://dave.org.uk>

"The first rule of Perl club is you do not talk about Perl club."
-- Chip Salzenberg

  • Comment on Re: can i pass an array as an argument during a sub routine call???

Replies are listed 'Best First'.
Re^2: can i pass an array as an argument during a sub routine call???
by monarch (Priest) on Sep 06, 2006 at 14:14 UTC
    It might be my disciplined C days here speaking, but I tend to find prototypes quite useful. Every once in a while I get an error complaining how I tried to send too many/not enough arguments to a function.

    Obviously a function with variable number of arguments rarely benefits from a prototype, but if you can add extra checking on those functions with fixed numbers of arguments, why wouldn't you..

      But you can check the number of arguments without resorting to prototypes. In my opinion, it's far easier to check the length of @_ than to use a prototype.

      As I said before, the problem is that prototypes don't just check the number of arguments. They can also make subtle changes to the types of arguments (as seen in the original post in this discussion). And I think that in many cases that makes them dangerous and best avoided.

      Tom Christiansen once explained the problems, so I don't need to go into detail.

      --
      <http://dave.org.uk>

      "The first rule of Perl club is you do not talk about Perl club."
      -- Chip Salzenberg

      It might be my disciplined C days here speaking, but I tend to find prototypes quite useful.

      What do C function signatures have to do with Perl prototypes?