Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^3: Squarepusher - A Tool To Convert Images To Audio For Oscilloscope X/Y Mode Displays

by Athanasius (Chancellor)
on Feb 04, 2013 at 16:12 UTC ( #1016966=note: print w/replies, xml ) Need Help??


in reply to Re^2: Squarepusher - A Tool To Convert Images To Audio For Oscilloscope X/Y Mode Displays
in thread Squarepusher - A Tool To Convert Images To Audio For Oscilloscope X/Y Mode Displays

Can’t speak for jdporter, but to my way of thinking the loops (C-style instead of foreach-style) are the least of the problems. To my old eyes the major issues are:

  1. $mode never changes, but it’s re-tested each time through the main loop.

  2. The code is monolithic and should be refactored into subroutines (one for each mode).

  3. use warnings; and use strict; are missing, and all the variables are global.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

  • Comment on Re^3: Squarepusher - A Tool To Convert Images To Audio For Oscilloscope X/Y Mode Displays
  • Select or Download Code

Replies are listed 'Best First'.
Re^4: Squarepusher - A Tool To Convert Images To Audio For Oscilloscope X/Y Mode Displays
by jdporter (Canon) on Feb 04, 2013 at 19:51 UTC

    In addition to the above:

    Instead of long runs of single-line comments, use POD.

    Instead of:

    $mode=$ARGV[0]; $frames=$ARGV[1]; $lossy=$ARGV[2]; $skip=$ARGV[3]; @bitmap=`cat $ARGV[4]`;
    How about:
    my $mode = shift; my $frames = shift; my $lossy = shift; my $skip = shift; my @bitmap = <>;
    Even better might be the use of a commandline option processor, e.g. Getopt::Long.

    Instead of:

    foreach $item (@bitmap) { chomp($item); $total.=$item; } @image=split(//,"$total");
    How about:
    chomp @bitmap; @image = split //, join '', @bitmap;

    It's not clear why

    $col=$c; $row=$thisRow;
    Such a construct usually implies protecting variables from being clobbered... but I don't see any clobbering going on...

    # If you don't want to use this optimization, just # comment out the whole if statement.
    Why not provide a command line switch for it?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1016966]
help
Chatterbox?
[moritz]: choroba in python I use jsonschema
[moritz]: I'm sure there's a Perl implementation of it too
[choroba]: it seems Kelp and similar help you a lot with dispatching, but how to do something similar with contents?
[moritz]: like JSON::Schema
[Corion]: ambrus++ # more bugs than lines
[Corion]: That's like "works on my machine" ;-)
[choroba]: I mean, I'd like to say "this path should run this sub, but first it should check the user is authenticated, has the following permissions, and the contents is valid against a given schema
[ambrus]: no, that means I haven't even tried to run it, might not even parse
[ambrus]: so it doesn't work on my machine
[choroba]: i.e. I know JSON::Schema, I'm just curious whether there's a ready solution to plug it into a web service

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (14)
As of 2016-12-08 12:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:













    Results (141 votes). Check out past polls.