in reply to atm deposit problem

chomp your input.

That problem recurs within your script, but isn't the issue.

Also, deposit() is in a different package (ie, a different namespace). It needs to either be exported into the main:: namespace, or called by its fully qualified name. (Bah, you are calling by its fully qualified name. lol)

The real problem however is this line: $b = @_; Evaluating an array in scalar context will assign to $b the number of elements in @_. Try $b = shift;, or $b = $_[0].

Updated to discuss deposit() function.


Dave

Replies are listed 'Best First'.
Re^2: atm deposit problem
by tospo (Hermit) on Jul 20, 2011 at 08:22 UTC
    or, for completeness sake and because it's frequently used:
    ($b) = @_;
    This will be useful once you need more than one value off the list, as you can do
    ($a, $b, $c) = @_;
    Some additional advice: get into the habit of using "strict" and "warnings" in every Perl script you write and declare variables with "my" or "our" (which should be the exception). You can quickly create a mess in a longer script simply with typos in variable names, which are not caught without using "strict". Using "warnings" will help you, among other things, to find variables you are using but have never assigned anything to. What you do in the Perl script is to put this in the top of the script:
    use strict; use warnings;
    Your code tries to keep a balance but there is no way of accessing it. What you are really trying to write is a "Checking" class. BTW: the name seems a bit awkward (it's not checking, it's making a transaction), always try to find a descriptive name for your packages and subroutines, if you can't find one then this might indicate that its task isn't well defined. You could explore object oriented coding to handle this in a better way or let your main script keep the balance. I hope this isn't too confusing.

      It sounds like checking as in "checking account" (or "chequing" to make it less US and more clear).

        "less US and more clear" now, thanks :-)

      Thanks all, your information much appreciated, issue resolved