2011-11-18 17 views
3
chdir($g_var->{g_loc}); 

我發現這行在我正在使用的一些Perl代碼,我不知道->是什麼意思。我的意思是我不能找到語法的含義。順便說一下,g_loc是文件夾的名稱。我在這裏錯過了什麼?Perl中的` - >`語法是什麼意思?

P.S.我只有4天轉換爲 perl。

+2

恭喜!你只是發現了我最厭惡Perl的特性:引用。 [perl.org有一個很好的教程](http://perldoc.perl.org/perlreftut.html),我希望可以幫助你。 – sarnold

+3

關於其他含義,請參閱[什麼是 - >運算符在Perl中執行?](http://stackoverflow.com/questions/8150845/what-does-operator-do-in-perl)從昨天開始[ - >箭頭在Perl中做?](http://stackoverflow.com/questions/4913280/what-does-the-arrow-do-in-perl)。 – daxim

回答

7

->被解除引用的參考。 $g_var包含對%hash(您可以使用$hash{key}訪問的元素)的引用。

您可以找到有關perlreftutperlref文檔中引用的詳細信息。還有關於列表列表(嵌套引用)的perllol

您可以打開使用perldoc perlreftut文檔等

2

$g_var是一個散列的引用。 指針僅僅是查找語法,定位「g_loc」哈希條目。

這就像$g_var{g_loc}如果%g_var是一個哈希,而不是一個哈希REF相同。

+2

除了$ g_var不能是一個散列,那將是%g_var。 – Martijn

+1

哎呀,是的。現在來解釋如何'%g_var'和'$ {g_var} g_loc'聯繫,給予不同的印記:( – ptomli

+0

'%g_var'引用的所有值,'$ {g_var} g_loc'引用一個值,'@g_var {'一','b'}'引用兩個值,全部來自同一個散列,Sigils指的是你引用了多少東西,而不是變量的類型。 – derobert

5

這是,如果你搜索perlop (perl operators)http://perldoc.perl.org你會得到什麼。 Perldoc的on-version版本已經過重大改進,並且坦率地說,從所有參考文檔我都喜歡這個最好的版本。

->」 是一箇中綴引用操作,就像它是在C和C++。如果右側或者是[...]{...}(...)下標,則左側必須是硬的或符號引用到一個數組,散列,或分別的子程序。 (或者從技術上講,如果它是一個陣列或哈希引用被用於分配,則該位置能夠保存一個硬引用。)請參閱perlreftutperlref

否則,右側是一個方法名稱或一個包含方法名稱或子例程引用的簡單標量變量,左側必須是對象(有福的引用)或類名(也就是說,一個包名稱)。見perlobj