From: Junio C Hamano Date: Mon, 18 Feb 2008 03:20:17 GMT Subject: Re: [PATCH] cvsexportcommit: be graceful when "cvs status" reorders the arguments Message-ID: <7vwsp3uf0u.fsf@gitster.siamese.dyndns.org> In-Reply-To: <7vbq6fvudp.fsf@gitster.siamese.dyndns.org> Junio C Hamano writes: > Side note. I personally do not like naming hashes and arrays > plural, and call a hash of paths and list of files %path and > @file respectively. That convention makes it easier to read > things like these: > > $file[4] ;# fourth file, not $files[4] > $path{'hello.c'} ;# path for 'hello.c', not $paths{'hello.c'} > ... > + while (@canstatusfiles) { > + my %basename = (); > + my @status = (); > + my @leftover = (); > + for (my $i = 0; $i < @canstatusfiles; $i++) { > + my $name = $canstatusfiles[$i]; > + my $basename = basename($name); Side note to the side note. A related naming guideline I failed to follow (because I was mostly copying your code) suggests that the hash here should be named %fullname, instead of %basename. Then logically: $fullname{'hello.c'} = 'a/b/hello.c'; that is, you consult %fullname hash using the basename as the key to extract the corresponding fullname. The naming guideline is "Name the dictionary after its values, not after its keys."