anneb@zogwarg.etl.army.mil (Anne Brink) (03/13/91)
Apologies if this has been gone over recently, news here just went through another "sporadic delivery" phase. Am I missing some concept about perl scoping here? This behavior seems strange to me: When I invoke { $answer = "Block of text"; &mysubroutine($answer); } and have defined later on: sub mysubroutine { local ($answer, $othervariablename); local ($nam) = @_; print "Parameter passed = $nam.\n"; } I get as output: Parameter passed = . But when I switch the local() declarations, like so: sub mysubroutine { local ($nam) = @_; local ($answer, $othervariablename); print "Parameter passed = $nam.\n"; } I get instead: Parameter passed = Block of text. It looks a lot like I'm tromping on the scope of variable $answer somehow. Changing local ($answer) to local ($anythingelse) in mysubroutine unsuprisingly produces the second result. I wouldn't have expected the parameter's name to have any relevance inside my subroutine, because it's been assigned to @_, or so I understand. (Yes, I know I probably should have the assignment to @_ before the other variable declarations. My editor must have moved them when I wasn't looking.(-:) I'm using 3.0pl44 on SunOS 4.1 on a Sun 3, compiled with gcc 1.37.1 I looked through my camel book and the FAQ, and could not find an appropriate enlightening passage. I'd appreciate any eplanations someone can send my way. E-mail answers would be preferred. Thanks in advance, -Anne Brink -- ############################################################################### Anne Brink # U.S. Army Engineer Topographic Labs anneb@etl.army.mil # Ft. Belvoir, VA (USA) ###############################################################################