Is this running at all for you? because I've identified a bunch of syntax errors, you might want to use use strict; and use warnings; in your code that will help you diagnosing and understanding
Here is what I've found:
- You have use APP::plugin where in package's definition you are not using the "APP::" namspace, also code references point to plugin
- Doing plugin->execute(...) will call execute method with "plugin" as the first parameter so fist line of execute subroutine should be my $class = shift;
- You missed word "sub" before execute
- When using threads you have to join them otherwise the program will NOT wait till the thread finishes execution
- You don't have anything on the shared hash so nothing will be printed unless you fill it with something like my %hsh :shared = ('mykey' => 'myvalue');
- Seems like you want to iterate over the hash's keys but you are iterating over both keys and values at same time, so you might want to change the foreach to foreach my $keys ( keys %abc)
- Your packages misses to provide a true value when loaded so you might want to add 1; as the last line of plugin package
If this is your first experience with Perl, I'd recommend you to start from basic stuff, since when you working with threads there is a high probability things screw up and you don't know where, bottom line is "..you have to learn to crawl before you learn to walk ..." (Aerosmith)
Usefull links:
Object oriented tutorial
Use strict and warnings
keys function
Finally here is your code corrected
use strict;
use warnings;
use threads;
use threads::shared;
use APP::Plugin;
use Data::Dumper;
my %hsh : shared = ( 'a' => 1 );
my $thread = threads->create( \&subrt, %hsh );
$thread->join();
sub subrt {
my %args = @_;
print APP::Plugin->execute(%hsh);
}
#Code for Plugin module
package APP::Plugin;
use strict;
use warnings;
sub execute {
my $class = shift();
my %abc = @_;
foreach (keys %abc) {
print $_. "---" . $abc{$_}."\n";
}
}
1;
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.