如果您可以使用纯哈希来描述您的数据,则使用纯哈希。但是,当您的数据结构变得更复杂时,您将需要使用引用。
想象一下,我正在存储有关库存项目的信息以及我有多少库存的程序。一个简单的散列效果很好:
$item{XP232} = 324;
$item{BV348} = 145;
$item{ZZ310} = 485;
如果你正在做的是创建一个可以读取文件和存储简单信息的报告程序快速,没有必要在所有使用引用。
但是,当事情变得更加复杂时,您需要参考。例如,我的程序不只是跟踪我的库存,我正在跟踪我库存的所有方面。库存物品也有名字,创建它们,等等。在这种情况下,公司,我希望有我的哈希没有指向一个单一的数据点(项目我有股票的数量),而是一个散列的引用:
$item{XP232}->{DESCRIPTION} = "Blue Widget";
$item{XP232}->{IN_STOCK} = 324;
$item{XP232}->{MANUFACTURER} = "The Great American Widget Company";
$item{BV348}->{DESCRIPTION} = "A Small Purple Whatzit";
$item{BV348}->{IN_STOCK} = 145;
$item{BV348}->{MANUFACTURER} = "Acme Whatzit Company";
你可以做各种古怪的事情做这样的事情(如为每个场单独的哈希值或者把所有的字段由冒号分隔单个值),但它只是更容易使用引用存储这些更复杂的结构。
在任何你想传递给周围的子程序或方法,这些事物的复杂的程序,此时你会反正他们被转换为引用。我通常使用hashrefs,除非它是一次性脚本。 –
投票重新开启......这绝对是回答客观 – Zaid