[gray][i]# The each function[/i][/gray]
[gray][i]# - Also of note are the keys, values, and foreach functions[/i][/gray]
[url=http://perldoc.perl.org/functions/my.html][black][b]my[/b][/black][/url] [blue]$hash[/blue] = [red]{[/red][purple]a[/purple] => [fuchsia]1[/fuchsia], [purple]b[/purple] => [fuchsia]2[/fuchsia], [purple]c[/purple] => [fuchsia]3[/fuchsia][red]}[/red][red];[/red]
[url=http://perldoc.perl.org/functions/print.html][black][b]print[/b][/black][/url] [red]"[/red][purple]Testing each:[purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
[olive][b]while[/b][/olive] [red]([/red][black][b]my[/b][/black] [red]([/red][blue]$key[/blue], [blue]$val[/blue][red])[/red] = [url=http://perldoc.perl.org/functions/each.html][black][b]each[/b][/black][/url] [blue]%$hash[/blue][red])[/red] [red]{[/red]
[black][b]print[/b][/black] [red]"[/red][purple] [blue]$key[/blue] => [blue]$val[/blue][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
[red]}[/red]
[gray][i]# The ref function[/i][/gray]
[black][b]my[/b][/black] [blue]$scalar[/blue] = [fuchsia]1234[/fuchsia][red];[/red]
[black][b]my[/b][/black] [blue]$scalarref[/blue] = \[blue]$scalar[/blue][red];[/red]
[black][b]my[/b][/black] [blue]$hashref[/blue] = [red]{[/red][fuchsia]1..6[/fuchsia][red]}[/red][red];[/red]
[black][b]my[/b][/black] [blue]$arrayref[/blue] = [red][[/red][fuchsia]1..6[/fuchsia][red]][/red][red];[/red]
[black][b]print[/b][/black] [red]"[/red][purple]Testing ref:[purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
[olive][b]foreach[/b][/olive] [black][b]my[/b][/black] [blue]$var[/blue] [red]([/red][blue]$scalar[/blue], [blue]$scalarref[/blue], [blue]$hashref[/blue], [blue]$arrayref[/blue][red])[/red] [red]{[/red]
[olive][b]if[/b][/olive] [red]([/red][red]'[/red][purple]SCALAR[/purple][red]'[/red] eq [url=http://perldoc.perl.org/functions/ref.html][black][b]ref[/b][/black][/url] [blue]$var[/blue][red])[/red] [red]{[/red]
[black][b]print[/b][/black] [red]"[/red][purple] It's a scalar reference: [blue]$$var[/blue][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
[red]}[/red] [olive][b]elsif[/b][/olive] [red]([/red][red]'[/red][purple]ARRAY[/purple][red]'[/red] eq [black][b]ref[/b][/black] [blue]$var[/blue][red])[/red] [red]{[/red]
[black][b]print[/b][/black] [red]"[/red][purple] It's an array reference: [/purple][red]"[/red] . [url=http://perldoc.perl.org/functions/join.html][black][b]join[/b][/black][/url][red]([/red][red]'[/red][purple],[/purple][red]'[/red], [blue]@$var[/blue][red])[/red] . [red]"[/red][purple][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
[red]}[/red] [olive][b]elsif[/b][/olive] [red]([/red][red]'[/red][purple]HASH[/purple][red]'[/red] eq [black][b]ref[/b][/black] [blue]$var[/blue][red])[/red] [red]{[/red]
[black][b]print[/b][/black] [red]"[/red][purple] It's a hash reference: [/purple][red]"[/red] . [black][b]join[/b][/black][red]([/red][red]'[/red][purple],[/purple][red]'[/red], [url=http://perldoc.perl.org/functions/map.html][black][b]map[/b][/black][/url] [red]{[/red][red]"[/red][purple][blue]$_[/blue]=>[blue]$var[/blue]->{[blue]$_[/blue]}[/purple][red]"[/red][red]}[/red] [url=http://perldoc.perl.org/functions/keys.html][black][b]keys[/b][/black][/url] [blue]%$var[/blue][red])[/red] . [red]"[/red][purple][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
[red]}[/red] [olive][b]elsif[/b][/olive] [red]([/red]! [black][b]ref[/b][/black] [blue]$var[/blue][red])[/red] [red]{[/red]
[black][b]print[/b][/black] [red]"[/red][purple] It's not a reference, it's a scalar: [blue]$var[/blue][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
[red]}[/red]
[red]}[/red]