in reply to re-syncing these subtitles
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: re-syncing these subtitles
by wazoox (Prior) on Sep 06, 2010 at 09:35 UTC | |
by jwkrahn (Abbot) on Sep 06, 2010 at 10:21 UTC | |
by wazoox (Prior) on Sep 06, 2010 at 11:48 UTC |