Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^2: re-syncing these subtitles

by wazoox (Prior)
on Sep 06, 2010 at 09:35 UTC ( [id://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.

Replies are listed 'Best First'.
Re^3: re-syncing these subtitles
by jwkrahn (Abbot) 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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://859026]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (3)
As of 2024-04-18 23:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found