perl -c adduser gives its first error as "my" variable $new_uid masks earlier declaration in same scope at adduser line 283. First, it doesn't seem to me I'm declaring the variable at all at 283. I suppose it could be an implicit declaration if there wasn't a previous declaration, but there is at 103. Second, I don't see any earlier declarations in any scope except the outer one. Third, the variiable was declared, with "our $new_uid;" much earlier in the file.
Could anyone explain to me what's going on? A couple other questions appear after the code. 32 use warnings; 33 use strict; 34 use Debian::AdduserCommon; 35 use Getopt::Long; 36 use File::Spec::Functions; 37 use File::Touch; ... 103 our $new_uid = undef; .... 160 # Parse options, sanity checks 161 unless ( GetOptions ("quiet|q" => sub { $verbose = 0 }, ... 173 "uid=i" => \$new_uid, # still in arguments to GetOptions Lines 103 and 173 are the only places $new_uid occurs in the text before line 283. 272 if ($use_template = &use_template) { 273 # we are using templates 274 if (check_template( $conf_dir, \%template)) { 275 merge_template( \%template, \%system) 276 } 277 # rewrite request as needed 278 if defined($new_name) { 279 # trying to create a new user 280 if (my @old = $$($template{uname}){$new_name}) { 281 # requested user is in the template 282 my $olduid = $$old[2]; **283 dief( gtx("Specified UID %d for %s does not match template UID of %d.\n"), $new_uid, 284 $new_name, $olduid) if defined($new_uid) && $new_uid != $olduid; 285 $new_uid = $olduid; 286 my $oldgid = $$old[3]; Bonus question #1: Where does the relevant scope start? I think it's 280, but if none of the if's create scopes it could be the start of the file. Bonus question #2: If I change 280 to to "if (my $old = ...." I get the error "my" variable $old masks earlier declaration in same statement at adduser line 282. Why? I mean, there's only declaration in the statement, and it seems to be on the first line even if the "statement" is everything up to the end of the if .. else .. block. The archives indicate that syntax errors sometimes produce seemingly unrelated "masks earlier declaration" errors, but even if this is a syntax error (it seems more like a semantic problem to me) the error seems odd. Thanks. Ross Boylan P.S. This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-gnu-thread-multi (with 88 registered patches, see perl -V for more detail) -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/