In the most simple case, you could just include the file using require. Unless you tell Perl otherwise (using a package ... declaration), everything will end up in the same namespace (i.e. main::). So yes, the variable $hello will be known within the included routine.
routines.pl
sub hello { print $hello; } 1; # need to end with a true value
mainscript.pl
#!/usr/bin/perl require "./routines.pl"; # assuming it's in the current directory $hello="hello123"; hello(); # prints "hello123"
Having said that, do use modules instead (with their own separate namespaces) for anything larger. This will help keep the mess to a minimum, which would otherwise ensue when the code grows... Same holds for global variables (like your $hello), so try to make judicious use of them... In other words, you'd more typically pass $hello as an argument to the function, e.g.
sub hello { my $hello_msg = shift; print $hello_msg; } # ... $hello="hello123"; hello($hello); # or just: # hello("hello123");
In reply to Re: Include subs from different perl file
by almut
in thread Include subs from different perl file
by ikkeniet
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |