understanding thread in perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting understanding thread in perl
# 1  
Old 08-30-2012
understanding thread in perl

Hi all,

I am trying to build threads which will go to localhost and list the files in given folder.

Code:
#!/usr/bin/perl
use threads;
        my $t1 = threads->new(\&sub1, 1);
        my $t2 = threads->new(\&sub2, 2);
     push(@threads,$t1);
      push(@threads,$t2);
 
foreach (@threads) {
my $num = $_->join
} 
 
sub sub1 {
        print "-----started thread 1-----\n";
        system("ssh localhost ls -l /home/user1");
        print "*****done with thread 1*****\n";
        return 1;
sub sub2 {
        print "-----started thread 2-----\n";
        system("ssh localhost ls -l /home/user2");
        print "*****done with thread 2*****\n";
        return 2;
}



I will be very greatfull if someone can explain me the working of BOLD portion and why are they necessory.
If we remove them, perl will simply exit saying 2 threads started 0 unjoined . and will not list the files.

I am using bash Linux bash shell.

Last edited by PranavEcstasy; 08-30-2012 at 10:34 AM..
# 2  
Old 08-30-2012
push (@threads, $t1) and push (@threads, $t2) ==> This will create thread objects and push its references into array @threads.

join() will give you the return value from a thread. I see that from each thread you're storing the return value into $num, but not making any use of it.

There're few errors in your program. I'm sure that was a typo-error. Here's another version of your program:
Code:
#!/usr/bin/perl
use threads;
my $t1 = threads->new(\&sub1, 1);
my $t2 = threads->new(\&sub2, 2);
push(@threads,$t1);
push(@threads,$t2);
 
foreach (@threads) {
    my $num = $_->join();
    print "$num\n";
} 
 
sub sub1 {
        print "-----started thread 1-----\n";
        system("ssh localhost ls -l /home/user1");
        print "*****done with thread 1*****\n";
        return 1;
}
sub sub2 {
        print "-----started thread 2-----\n";
        system("ssh localhost ls -l /home/user2");
        print "*****done with thread 2*****\n";
        return 2;
}

This User Gave Thanks to balajesuri For This Post:
# 3  
Old 08-31-2012
Thanks

thanks for your help sir,

I did this code in linux but now i am trying to run it on sunOS and its giving me error could not find threads.pm in @INC.

Do I have to install something so that it will run....?
# 4  
Old 08-31-2012
You may need to install the threads module.
This User Gave Thanks to balajesuri For This Post:
# 5  
Old 09-04-2012
Perl 5.6.1

Quote:
Originally Posted by balajesuri
You may need to install the threads module.

This thread module needs perl 5.8 or above. Is there any way i can use threas in perl 5.6.1...???
# 6  
Old 09-06-2012
There is ithreads (interpreter threads) for perl 5.6. Check the perl documentation to see if ithreads are used or the older 5.005 implementation is used in your system.

A good option is to upgrade your installation of perl. Or if you (or your task) are not so keen on performance, you may fork out another process.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help understanding perl script

Hello, A former sys admin placed this script on one of our boxes and it needs to be adjusted, but I'm not familiar with perl. Can someone help break this down for me? I'm particularly interested in the -mtime function. What's the time frame being referenced here. ... (5 Replies)
Discussion started by: bbbngowc
5 Replies

2. Shell Programming and Scripting

Understanding an example of perl map() function

Hello, I have many folders under which there is always a file with the same name, which contains the data I need to process later. A perl oneliner was borrowed perl -e 'print "gene_id\t", join("\t", map {/(.*)\//; $1} @ARGV),"\n";' *_test.trim/level.csvto make a header so that each column... (5 Replies)
Discussion started by: yifangt
5 Replies

3. Shell Programming and Scripting

Help with perl code understanding

Hi, I need to understand below perl code, can some one advise me. perl -MDate::Parse -e'BEGIN{$main::now=time;$main::old=(time-60*30)}' -nE'if(/^(\w+\s+\d+\s+\d+:\d+:\d+)/) {$t=str2time $1; $t > $old && $t < $now && print}' (1 Reply)
Discussion started by: learnbash
1 Replies

4. Programming

Understanding perl code

What is the difference between the two statements below? A: $a->{"$fruit"}->{"$color"}->{size} = $size B: $size = $a->{"$fruit"}->{"$color"}->{size} Please assist. Thanks! (0 Replies)
Discussion started by: onlinelearner02
0 Replies

5. Shell Programming and Scripting

Help understanding some Perl code.

Well, I found myself trying to fix some Perl code (Ive never done any Perl in my life) and I pinpointed the place where the bug could be. But to be sure I have to know what does a few line of code mean: $files_lim =~ (/^\d*$/) $files_lim =~ (/^\d*h$/) $files_age =~ s/h// The code where... (2 Replies)
Discussion started by: RedSpyder
2 Replies

6. Shell Programming and Scripting

Help understanding Perl code.

Well, I found myself trying to fix some Perl code (Ive never done any Perl in my life) and I pinpointed the place where the bug could be. But to be sure I have to know what does a few line of code mean: $files_lim =~ (/^\d*$/) $files_lim =~ (/^\d*h$/)$files_age =~ s/h//The code where this was... (0 Replies)
Discussion started by: RedSpyder
0 Replies

7. Shell Programming and Scripting

Understanding perl statement

can someone help me how to interpret this line? my ($class, $hashref) = @_; my $portfolio = {}; if ($hashref->{portfolio_id}) { ($portfolio) = GEmySQL->get ("select * from portfolio where portfolio.id=$hashref->{portfolio_id}"); } =============== Question: how do... (2 Replies)
Discussion started by: onlinelearner02
2 Replies

8. Shell Programming and Scripting

Perl: Understanding @allwords

Hi guys, Here is the code: my @allwords = (); my %seen=(); foreach my $curr (@allwords) { $seen{$curr} = 1; } @allwords = keys %seen; my question is: what will @allwords now contain, or how would the entries in the @allwords array be different after this manipulation? Thank... (3 Replies)
Discussion started by: 300zxmuro
3 Replies

9. Shell Programming and Scripting

perl command understanding

Hi All, Can you please help me interpret the following command. Which I am not able to understand. Also can you please illustrate what it is used for. perl -pi -e 's/\015//g' text_file.dat Regards (3 Replies)
Discussion started by: rakesh.su30
3 Replies

10. Shell Programming and Scripting

Need help understanding perl script error

I solicited this site earlier this week and got a good answer for a perl Script so I made this script from what understood from the answers But now I have a bug and I'm stump. It doesn't parse correctly the Output it stays on the first line My $f2 and reprints in a endless loop I'm sure there... (3 Replies)
Discussion started by: Ex-Capsa
3 Replies
Login or Register to Ask a Question