Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re^2: re-syncing these subtitles

by wazoox (Prior)
on Sep 06, 2010 at 09:35 UTC ( #859026=note: print w/ replies, xml ) Need Help??


in reply to Re: re-syncing these subtitles
in thread re-syncing these subtitles

The $? variable is not relevant in this context. You should be using either $! or $^E.

Oh yes, it's always quite easy to mix these up :)

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.

Well, same as above : quick and dirty script hastily thrown together, not too much testing...

Why not just: my ( $hours, $minutes, $seconds ) = split /:/, $time;

Because I want that if you pass only one value, it defaults to seconds, and to minutes:seconds with only two values.

An unnecessary step as the numbers are already numerical.

It's a cautionary cleanup in case you're passing garbage as parameters. it will at least avoid mangling hopelessly the output :)

The number before the period in the format string for floating point is the total width.

I think you missed the "d" there :). Edit : Well I don't know what's the right form, but "%02.3f" apparently works as intended... ""%05.3f" adds 4 leading zeros.


Comment on Re^2: re-syncing these subtitles
Replies are listed 'Best First'.
Re^3: re-syncing these subtitles
by jwkrahn (Monsignor) on Sep 06, 2010 at 10:21 UTC
    It's a cautionary cleanup in case you're passing garbage as parameters.

    Perhaps you should use Scalar::Util::looks_like_number to confirm a numerical value.


    I think you missed the "d" there :)

    There is no letter 'd' in the line:

    my $seconds = sprintf( "%02.3f", ( ( $sectime - ( $hours * 3600 ) +) - ( $minutes * 60 )) );


    Update


    Why not just:
     my ( $hours, $minutes, $seconds ) = split /:/, $time;
    Because I want that if you pass only one value, it defaults to seconds, and to minutes:seconds with only two values.

    Then try it like this:

    my ( $hours, $minutes, $seconds ) = ( split /:/, $time )[ -3, -2, -1 ] +;
      There is no letter 'd' in the line:

      Ooops garbled copy and paste....

      my ( $hours, $minutes, $seconds ) = ( split /:/, $time ) -3, -2, -1 ;

      Nice but too clever for my taste :)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://859026]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (8)
As of 2015-07-30 08:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (270 votes), past polls