in reply to A Gear Inch Calculator for Cyclists

Why do beginners programs have the tendency to be overly chatty? Your program prints a line, and read something from input for each chainwheel, whether or not the wheels are metric, and for the size of the wheel.

Could you imagine what life would be if every program acted that way? Just imagine a 'tar' asking you for each option whether you want to include that, and each file to be included to be typed in separatedly? There's a reason many programs take command line arguments, and that programs that read from stdin and write to stdout are often called filters. Programs like yours are much harder to chain together.

I would also perform some form of input checking, and round of the final value.

#!/usr/bin/perl use strict; use warnings; die "Usage: $0 <chainring> <cog> <wheelsize>\n" unless @ARGV == 3; my ($chainring, $cog, $wheelsize) = @ARGV; $wheelsize = $1 * .39 if $wheelsize =~ /^(\d+)m$/; die "Chainring needs to be a positive integer\n" unless $chainring =~ +/^\d+$/; die "Cog needs to be a positive integer\n" unless $cog =~ /^\d+$ +/; die "Wheelsize needs to be a positive number\n" unless $wheelsize =~ /^\d+(?:[.]\d*)?$/; my $gearinches = sprintf "%.2f" => $wheelsize * $chainring / $cog; print <<"--"; The gear inches for a chainring of $chainring teeth and a cog of $cog teeth, and a wheel of $wheelsize inches is $gearinches gear inches. -- __END__

Abigail

Replies are listed 'Best First'.
Re: Re: A Gear Inch Calculator for Cyclists
by liz (Monsignor) on Aug 12, 2003 at 14:54 UTC
    Why do beginners programs have the tendency to be overly chatty?

    I think it has a lot to do with insecurity. Beginners want to be continually assured that the program is actually doing what they think they told the program to do.

    Once you are more experienced, you are self assured about your programming capabilities, and you "know" that the program is doing what you told it to do. So you don't need the continuous assurances anymore.

    Liz