我正在初始化一個函數內的變量,並希望將此變量傳遞給另一個函數。這個變量保存一個char值。 我曾嘗試傳遞引用和解引用,聲明函數以外的變量,並使用本地。如何在perl中將一個變量從一個函數傳遞到另一個函數中
我也看了perlmonks,perl的例子,谷歌搜索,並通過本網站尋找解決方案,但無濟於事。我剛剛開始使用Perl編程,所以任何幫助將不勝感激!
我正在初始化一個函數內的變量,並希望將此變量傳遞給另一個函數。這個變量保存一個char值。 我曾嘗試傳遞引用和解引用,聲明函數以外的變量,並使用本地。如何在perl中將一個變量從一個函數傳遞到另一個函數中
我也看了perlmonks,perl的例子,谷歌搜索,並通過本網站尋找解決方案,但無濟於事。我剛剛開始使用Perl編程,所以任何幫助將不勝感激!
聽起來像你需要通讀一些文件,而不僅僅是谷歌周圍。我會建議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();
他正在談論初始化一個函數內的var,然後傳遞給另一個函數。 $ A = 0;的init($ A);使用($ A)。這就是我對qs的理解。 –
@OlegGryb很難說沒有任何代碼顯示了什麼嘗試。 – ysth
你是對的,沒有足夠的信息,但這是我的理解。 –
如果傳遞通過引用的參數(見下文),可以通過第一功能被修改,然後可以將其傳遞到另一功能:
#!/usr/bin/perl
sub f {
$c = shift;
$$c='m';
}
$c='a';
f(\$c);
print $c;
這將打印的「m」
有沒有理由讓你的第一個函數不能返回這個變量?
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
可以打印它。
的技術術語,這就是:一個可怕的,可怕的,邪惡的想法,你應該永遠,永遠 想到這樣做的。
這是因爲你認爲一個特定的變量突然被設置爲一個值,神祕地改變了值,沒有任何理由。這對於一個變量來說足夠糟糕了,但是如果你將它用作柺杖,那麼最終會產生許多無法通過程序跟蹤的變量。
如果你發現自己做了這麼多,你可能需要重新考慮你的代碼邏輯。
某些代碼和「什麼不工作」描述會有所幫助。 –