gEDA-user: refdes_renum and pgskip

David W. Schultz david.schultz at earthlink.net
Wed Jul 12 17:11:03 EDT 2006


According to my copy of "Programming Perl",

"If you don't initialize your variables, they automatically spring into 
existence with a null value that means either '' or 0 as necessary."

Which is why my change works as expected. If the --pgskip command line 
option is not specified, $pgskip springs into being with a value of zero.

OK, evidence of how my change works. I created two simple files with a 
single "refdes=U1" in each and then ran refdes_renum on them with 
various options:

refdes_renum --verbose 1.sch 2.sch Processing input file #1: 1.sch
Refdes line "refdes=U1" has pre="U"
Renumbering refdes=U1 to U1
Processing input file #2: 2.sch
Refdes line "refdes=U1" has pre="U"
Renumbering refdes=U1 to U2



refdes_renum --verbose --pgskip 1.sch 2.sch
Processing input file #1: 1.sch
Refdes line "refdes=U1" has pre="U"
Renumbering refdes=U1 to U101
Incremented "U" counter to 200
Processing input file #2: 2.sch
Refdes line "refdes=U2" has pre="U"
Renumbering refdes=U2 to U201
Incremented "U" counter to 300


refdes_renum --verbose --pgskip 1000 1.sch 2.sch
Processing input file #1: 1.sch
Refdes line "refdes=U101" has pre="U"
Renumbering refdes=U101 to U1001
Incremented "U" counter to 2000
Processing input file #2: 2.sch
Refdes line "refdes=U201" has pre="U"
Renumbering refdes=U201 to U2001
Incremented "U" counter to 3000



I think that covers all of the possibilities.

With your suggested change, I get:

refdes_renum --verbose 1.sch 2.sch
Processing input file #1: 1.sch
Refdes line "refdes=U1001" has pre="U"
Renumbering refdes=U1001 to U101
Incremented "U" counter to 200
Processing input file #2: 2.sch
Refdes line "refdes=U2001" has pre="U"
Renumbering refdes=U2001 to U201
Incremented "U" counter to 300

refdes_renum --verbose --pgskip 1.sch 2.sch
Processing input file #1: 1.sch
Refdes line "refdes=U101" has pre="U"
Renumbering refdes=U101 to U1
Processing input file #2: 2.sch
Refdes line "refdes=U201" has pre="U"
Renumbering refdes=U201 to U2

refdes_renum --verbose --pgskip 1000 1.sch 2.sch
Processing input file #1: 1.sch
Refdes line "refdes=U1" has pre="U"
Renumbering refdes=U1 to U1001
Incremented "U" counter to 2000
Processing input file #2: 2.sch
Refdes line "refdes=U2" has pre="U"
Renumbering refdes=U2 to U2001
Incremented "U" counter to 3000

Which still fails the case of no pgskip option specified.


John Luciani wrote:
> On 7/12/06, David W. Schultz <david.schultz at earthlink.net> wrote:
>> John Luciani wrote:
>>
>> > That line should be ---
>> >
>> > $pgskip = 100 unless defined $pgskip;
>> >
>> > (* jcl *)
>> >
>> > ---
>> > http://www.luciani.org
>> >
>> >
>>
>> Really? I just tried it and it set pgskip to 100 even without the
>> --pgskip command line option specified. $pgskip gets defined when getopt
>> is invoked, or so it seems to me.
> 
> Using the :i specification you get an undefined value unless you
> specify the option on the command line. If you specify the option name
> without a value you get the default. There is still a condition where your
> program could execute with an undefined value.
> 
> Try the little test program below with no command line options and then
> try it with an option of "--test". With no command line options
> the value is undefined. With "--test" the value is 100.
> 
> #--- cut here--
> #!/usr/bin/perl
> 
> use strict;
> use warnings;
> use Carp;
> 
> use Getopt::Long;
> 
> my $Test;
> 
> GetOptions("test:100"  => \$Test);
> 
> print "\$Test is undefined\n" unless defined $Test;
> printf("\$Test is defined and equals %i\n", $Test) if defined $Test;
> 
> #-- cut here --
> 


-- 
David W. Schultz
http://home.earthlink.net/~david.schultz/

Just because you're constitutionally entitled to a personal opinion
doesn't mean you're constitutionally entitled to a professional opinion


More information about the geda-user mailing list