[gray]#!/usr/bin/perl[/gray]
[url=http://perldoc.perl.org/functions/use.html][black][b]use[/b][/black][/url] [green]warnings[/green][red];[/red]
[black][b]use[/b][/black] [green]strict[/green][red];[/red]
[url=http://perldoc.perl.org/functions/my.html][black][b]my[/b][/black][/url] [blue]$os_lookup[/blue] = [red]{[/red]
[fuchsia]170[/fuchsia] => [red][[/red] [red]"[/red][purple]winvista[/purple][red]"[/red], [red]"[/red][purple]readme_winvista.txt[/purple][red]"[/red] [red]][/red],
[fuchsia]173[/fuchsia] => [red][[/red] [red]"[/red][purple]winvista64[/purple][red]"[/red], [red]"[/red][purple]readme_winvista64.txt[/purple][red]"[/red] [red]][/red],
[fuchsia]119[/fuchsia] => [red][[/red] [red]"[/red][purple]winvxp[/purple][red]"[/red], [red]"[/red][purple]readme_winxp.txt[/purple][red]"[/red] [red]][/red], [gray][i]# Are we sure this should be winvxp and not winxp ?[/i][/gray]
[fuchsia]210[/fuchsia] => [red][[/red] [red]"[/red][purple]winxp64[/purple][red]"[/red], [red]"[/red][purple]readme_winxp64.txt[/purple][red]"[/red] [red]][/red],
[fuchsia]541[/fuchsia] => [red][[/red] [red]"[/red][purple]windows*7 graphics[/purple][red]"[/red], [red]"[/red][purple]readme_windows *7 graphics .txt[/purple][red]"[/red] [red]][/red],
[fuchsia]525[/fuchsia] => [red][[/red] [red]"[/red][purple]winvista64[/purple][red]"[/red], [red]"[/red][purple]windows *7 /windows *7/windows *.txt[/purple][red]"[/red] [red]][/red], [gray][i]# Duplicate entry here (winvista64 in both 173 and 525).[/i][/gray]
[red]}[/red][red];[/red]
[gray][i]# This is simply an example operating system value. I expect you'd get it from somewhere else.[/i][/gray]
[black][b]my[/b][/black] [blue]$operatingsystem[/blue] = [fuchsia]123[/fuchsia][red];[/red] [gray][i]# Unknown value to prove defaulting.[/i][/gray]
[gray][i]# Simply defining $Folder and $Readme with a restricted scope[/i][/gray]
[black][b]my[/b][/black] [red]([/red][blue]$Folder[/blue], [blue]$Readme[/blue][red])[/red][red];[/red]
[gray][i]# Very simple replacement for your entire if/else/elsif/elsif... structure[/i][/gray]
[olive][b]if[/b][/olive][red]([/red][blue]$operatingsystem[/blue] && [url=http://perldoc.perl.org/functions/exists.html][black][b]exists[/b][/black][/url] [blue]$os_lookup[/blue]->[red]{[/red][blue]$operatingsystem[/blue][red]}[/red][red])[/red] [red]{[/red]
[gray][i]# Values from matched hash entry[/i][/gray]
[red]([/red][blue]$Folder[/blue], [blue]$Readme[/blue][red])[/red] = [blue]@[/blue][red]{[/red][blue]$os_lookup[/blue]->[red]{[/red][blue]$operatingsystem[/blue][red]}[/red][red]}[/red][red];[/red]
[red]}[/red] [olive][b]else[/b][/olive] [red]{[/red]
[gray][i]# Default case[/i][/gray]
[red]([/red][blue]$Folder[/blue], [blue]$Readme[/blue][red])[/red] = [red]([/red][red]"[/red][purple]win2k_xp[/purple][red]"[/red], [red]"[/red][purple]readme_2k_xp.txt[/purple][red]"[/red][red])[/red][red];[/red]
[red]}[/red]
[gray][i]# Just to show you what has been generated.[/i][/gray]
[url=http://perldoc.perl.org/functions/print.html][black][b]print[/b][/black][/url] [red]"[/red][purple]Folder: [[blue]$Folder[/blue]], Readme: [[blue]$Readme[/blue]][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]