2013-08-20 29 views

Trả lời

15

Sử dụng wantarray

if(not defined wantarray) { 
    # void context: foo() 
} 
elsif(not wantarray) { 
    # scalar context: $x = foo() 
} 
else { 
    # list context: @x = foo() 
} 
+0

Ngoài ra còn có http://p3rl.org/Want module, nhưng đối với trường hợp này, nó có thể là quá mức cần thiết. –

9

Vâng, những gì bạn đang tìm kiếm là wantarray:

use strict; 
use warnings; 

sub foo{ 
    if(not defined wantarray){ 
    print "Called in void context!\n"; 
    } 
    elsif(wantarray){ 
    print "Called and assigned to an array!\n"; 
    } 
    else{ 
    print "Called and assigned to a scalar!\n"; 
    } 
} 

my @a = foo(); 
my $b = foo(); 
foo(); 

Mã này xuất ra như sau:

Called and assigned to an array! 
Called and assigned to a scalar! 
Called in void context!