in reply to Re^2: Regex with multiple pattern omissions
in thread Regex with multiple pattern omissions
The simple explanation is: when you define a sub X, do not put parens, () after the name.
That's it.
sub X(){} means something very different than just sub X{}.
I would go as far as to say that you never have to, and normally should not put any (....stuff...) after the sub's name.
-What you have done with shift is 100% correct.
-Maybe chomp() is not necessary, but it doesn't "hurt".
-A more important point for me is to indent the lines within the subroutine by either 3 or 4 spaces.
"Prototype failure" example:
#!/usr/bin/perl -w use strict; # This sequence works, although with a warning... # because Perl hasn't yet seen subroutine X. X("xyz"); sub X() # this means that subroutine X cannot # be called with any arugment at all. # sub X(); #is ok, # sub X("abc"); #is not ok. { my $input = shift; print "$input\n"; } #this would fail to produce a result - program fails to compile # X("abc"); # because now that subroutine X() has been seen, it is understood # that no arguments can be passed to it. __END__ prints: main::X() called too early to check prototype at C:\TEMP\prototypes.pl + line 4. xyz
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Regex with multiple pattern omissions
by jhoop (Acolyte) on Jan 10, 2011 at 14:40 UTC | |
by Marshall (Canon) on Jan 11, 2011 at 09:21 UTC |