[COLOR=#0000ff]# Example for using hard refernces[/color]
[COLOR=#0000ff]# works with strict-pragma too[/color]
[COLOR=#804040][b]use strict[/b][/color];
[COLOR=#804040][b]use warnings[/b][/color];
[COLOR=#804040][b]sub[/b][/color][COLOR=#008080] [/color][COLOR=#008080]addition[/color]{
[COLOR=#804040][b]my[/b][/color] ([COLOR=#008080]$a[/color], [COLOR=#008080]$b[/color]) = [COLOR=#008080]@_[/color];
[COLOR=#804040][b]return[/b][/color] ([COLOR=#008080]$a[/color]+[COLOR=#008080]$b[/color]);
}
[COLOR=#804040][b]sub[/b][/color][COLOR=#008080] [/color][COLOR=#008080]substraction[/color]{
[COLOR=#804040][b]my[/b][/color] ([COLOR=#008080]$a[/color], [COLOR=#008080]$b[/color]) = [COLOR=#008080]@_[/color];
[COLOR=#804040][b]return[/b][/color] ([COLOR=#008080]$a[/color]-[COLOR=#008080]$b[/color]);
}
[COLOR=#804040][b]my[/b][/color] ([COLOR=#008080]%foo_hash[/color], [COLOR=#008080]$operation[/color], [COLOR=#008080]$bar[/color]);
[COLOR=#0000ff]# create hash of function references[/color]
[COLOR=#008080]$foo_hash[/color]{[COLOR=#ff00ff]'[/color][COLOR=#ff00ff]addition[/color][COLOR=#ff00ff]'[/color]} = [COLOR=#008080]\&addition[/color];
[COLOR=#008080]$foo_hash[/color]{[COLOR=#ff00ff]'[/color][COLOR=#ff00ff]substraction[/color][COLOR=#ff00ff]'[/color]} = [COLOR=#008080]\&substraction[/color];
[COLOR=#008080]$a[/color] = [COLOR=#ff00ff]1[/color]; [COLOR=#008080]$b[/color] = [COLOR=#ff00ff]2[/color];
[COLOR=#0000ff]#[/color]
[COLOR=#008080]$operation[/color] = [COLOR=#ff00ff]'[/color][COLOR=#ff00ff]addition[/color][COLOR=#ff00ff]'[/color];
[COLOR=#008080]$bar[/color]=[COLOR=#008080]$foo_hash[/color]{[COLOR=#008080]$operation[/color]}([COLOR=#008080]$a[/color],[COLOR=#008080]$b[/color]);
[COLOR=#804040][b]print[/b][/color] [COLOR=#ff00ff]"[/color][COLOR=#6a5acd]\$[/color][COLOR=#ff00ff]bar=[/color][COLOR=#008080]$bar[/color][COLOR=#6a5acd]\n[/color][COLOR=#ff00ff]"[/color];
[COLOR=#0000ff]#[/color]
[COLOR=#008080]$operation[/color] = [COLOR=#ff00ff]'[/color][COLOR=#ff00ff]substraction[/color][COLOR=#ff00ff]'[/color];
[COLOR=#008080]$bar[/color]=[COLOR=#008080]$foo_hash[/color]{[COLOR=#008080]$operation[/color]}([COLOR=#008080]$a[/color],[COLOR=#008080]$b[/color]);
[COLOR=#804040][b]print[/b][/color] [COLOR=#ff00ff]"[/color][COLOR=#6a5acd]\$[/color][COLOR=#ff00ff]bar=[/color][COLOR=#008080]$bar[/color][COLOR=#6a5acd]\n[/color][COLOR=#ff00ff]"[/color];