in reply to Regex Improvement

Since you used [.\w]+ to try to match the last file name component, the match will fail if the user supplied a string ending with the directory delimiter (\home\me\foo\bar\).

This takes you beyond just fixing your regex, but if you use the File::Spec module, you can accomodate end-cases like this and get portability to boot. For your example, this might look like:
$pat = File::Spec->catfile($HomePath, ''); if ($Model =~ m/^\Q$pat\E/i) { (undef,$WorkingDirectory,undef) = File::Spec->splitpath($'); } else { # whatever to do if the supplied variable isn't under $HomePath }
The initial File::Spec->catfile call appends a trailing '\' so that it doesn't show up as an initial '\' in the resulting $' that you pass to File::Spec->splitpath.