open my $fh, "<", $infile or die "error opening '$infile':$?";
The $? variable is not relevant in this context. You should be using either $! or $^E.
if ( m/^(\d{2}:\d{2}:\d{2},\d+)\s\-\-\>\s(\d{2}:\d{2}:\d{2},\d+)/g + ) {
You are using the /g global option in a scalar context, which would make sense in a while loop, but the value of $_ changes each time you test it so it makes no sense to use it there.
my @elems = split(':', $time); my $seconds = pop @elems; my $minutes = pop @elems; my $hours = pop @elems;
Why not just:
my ( $hours, $minutes, $seconds ) = split /:/, $time;
# force to numerical $hours += 0; $minutes += 0; $seconds += 0;
An unnecessary step as the numbers are already numerical.
my $seconds = sprintf( "%02.3f", ( ( $sectime - ( $hours * 3600 ) +) - ( $minutes * 60 )) );
The number before the period in the format string for floating point is the total width. So if you want the result to look like '12.345' then you need a format string of '%06.3f' because it has a total width of six characters.
In reply to Re: re-syncing these subtitles
by jwkrahn
in thread re-syncing these subtitles
by wazoox
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |