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 (Abbot)
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
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?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (9)
As of 2015-07-02 05:20 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 (28 votes), past polls