2. ARGUMENTS
• IT IS NOT ALWAYS NECESSARY TO PROMPT THE USER WITHIN EACH SUBROUTINE
• SOMETIMES THERE IS A NEED TO PASS EXISTING VALUES IN TO BE MANIPULATED
OR…
• YOU CAN WRITE A DYNAMIC SUBROUTINE TO ACCEPT ARGUMENTS SO THAT IT
CAN BE REUSED.
• ARGUMENTS IN SUBROUTINES ARE TREATED AS POSITIONAL PARAMETERS, THEY
ARE PASSED IN AS A SPECIAL ARRAY VARIABLE…$_
• $_[0]
• $_[1]
• …
3. PASSING ARGUMENTS EXAMPLE
SUBROUTINE
SUB MAX
{
IF ($_[0] > $_[1])
{
$_[0];
}
ELSE
{
$_[1];
}
}
SUBROUTINE CALL
$WHICH = &MAX(10,11);
$WHICH = &MAX(10,11,100);
• COMMON MISTAKES: EXTRA
ARGUMENTS DO NOT ERROR OUT
BUT ARE IGNORED.
4. NAMING ARGUMENTS
• IF THE $_[X] SCHEME IS TOO CONFUSING BASED ON THE NUMBER OF
ARGUMENTS YOU PASS IN THERE IS A WAY TO RENAME THEM AS
PRIVATE(LOCAL) VARIABLES.
• THE CODE IS DYNAMIC ENOUGH THAT IT CAN AUTOMATICALLY ASSIGN THE
VALUES IF YOU POINT TO THE CORRECT LOCATION.
• CODE: MY(NEWVAR1, NEWVAR2,…) = @_;
• COMMON MISTAKES: TRYING TO ACCESS PRIVATE VARIABLES OUTSIDE OF A
5. RETURN
• REMINISCENT OF TRADITIONAL PROGRAMMING LANGUAGES
• USED TO TERMINATE A SUBROUTINE AND RETURN A SPECIFIED VALUE
• CODE: RETURN VARIABLE/EXPRESSION;
• EX.
SUB RETURNLARGE
{
MY($FIRST, $LAST) = @_;
IF ( $FIRST > $LAST)
{
RETURN $FIRST;
}
ELSE
{
RETURN $LAST;
}
}
• GOOD PROGRAMMING: SOME PROGRAMMERS LIKE THIS TO MALE THE CODE MORE READABLE, IT KEEPS LANGUAGES
CONSISTENT.