in reply to Using expressions in string literals

Since your expressions don't need to be evaluated, you don't need to use eval() like other posters suggested. Try putting the expressions outside the string literal and use concatenation to compose the string:
push(@text, "CACHEFILE c:\\wwwtools\\analog\\OldLogs\\Cache\\All\\" . +@ParsedTime[$year] . $Months{@ParsedTime[$month]-1} . "* \n");
What are you trying to do with @ParsedTime[$year]. That is an array slice, not an array access. It should be $ParsedTime[$year].