in reply to Changing -> to work within a string
Why not use sprintf to keep the method calls somewhat separated from the string?
eg:
my $directory = sprintf '%s/subdir/%s/', $machine->work_dir, $machin +e->software_version; [download]