2014-06-22 25 views
0

我正在初始化一個函數內的變量,並希望將此變量傳遞給另一個函數。這個變量保存一個char值。 我曾嘗試傳遞引用和解引用,聲明函數以外的變量,並使用本地。如何在perl中將一個變量從一個函數傳遞到另一個函數中

我也看了perlmonks,perl的例子,谷歌搜索,並通過本網站尋找解決方案,但無濟於事。我剛剛開始使用Perl編程,所以任何幫助將不勝感激!

+3

某些代碼和「什麼不工作」描述會有所幫助。 –

回答

0

聽起來像你需要通讀一些文件,而不僅僅是谷歌周圍。我會建議http://www.perl.org/books/beginning-perl/

use strict; 
use warnings; 

sub foo { 
    my $char = 'A'; 

    bar($char); 
} 

sub bar { 
    my ($bar_char) = @_; 

    print "bar got char $bar_char\n"; 
} 

foo(); 
+0

他正在談論初始化一個函數內的var,然後傳遞給另一個函數。 $ A = 0;的init($ A);使用($ A)。這就是我對qs的理解。 –

+0

@OlegGryb很難說沒有任何代碼顯示了什麼嘗試。 – ysth

+0

你是對的,沒有足夠的信息,但這是我的理解。 –

0

如果傳遞通過引用的參數(見下文),可以通過第一功能被修改,然後可以將其傳遞到另一功能:

#!/usr/bin/perl 

sub f { 
    $c = shift; 
    $$c='m'; 
} 

$c='a'; 
f(\$c); 
print $c; 

這將打印的「m」

0

有沒有理由讓你的第一個函數不能返回這個變量?

my $config_variable = function1($param1); 
function2 ($config_variable, $param2); 

您也可以通過多個變量回過:

my ($config_variable, $value) = function1($param1); 
my $value2 = function2($param1, $config_variable); 

這將是最好的方式。但是,你可以使用的全局變量,他們可以從函數中使用的功能:

#! /usr/bin/env perl 
# 
use strict; 
use warnings; 

my $value; 

func1(); 
func2(); 

sub func1 { 
    $value = "foo"; 
} 

sub func2 { 
    print "Value = $value\n"; 
} 

注意,我宣佈$value之外的這兩種功能,因此它在整個文件全球 - 即使是在子程序。現在,func1可以設置它,並且func1可以打印它。

的技術術語,這就是:一個可怕的,可怕的,邪惡的想法,你應該永遠,永遠 想到這樣做的。

這是因爲你認爲一個特定的變量突然被設置爲一個值,神祕地改變了值,沒有任何理由。這對於一個變量來說足夠糟糕了,但是如果你將它用作柺杖,那麼最終會產生許多無法通過程序跟蹤的變量。

如果你發現自己做了這麼多,你可能需要重新考慮你的代碼邏輯。

相關問題