As pointed out by
rob_au, you can use
exists on an array in Perl 5.6 or better. If you're forced to use something as antiquated as 5.005, then consider this:
print "+$exp[1]" if ($#exp >= 1);
The element at index 1 may be undef, though, and give you warnings.
The point of your question, though, is to get these listed properly. What about something simpler, such as this:
print DATA join('+', $month, @exp, $hoursworked)."\n";
This will put plus signs between any values in
@exp. I think
join is a much better solution than a whole whack of
print statements.
Just a few other remarks too:
- The only characters you need to escape within double quotes are other double quotes ("\""), literal $, @, \, and things like newline ("\n"). The rest are generally fine.
- Recycle your variables instead of making new ones. For example: $year += 1900 instead of my $year1 = $year + 1900 since you don't really use $year otherwise.
- Declare several variables with a single my like this: my ($sec, $min, $hour) = ...
- Indent your code to make it more readable. It might seem like a trivial matter on a program like this, but when it grows, you'll appreciate it.