#1609: tools/docs/filename_and_chapter.pl:  Can we make this work with our 
coding
standards?
------------------------------+---------------------------------------------
 Reporter:  jkeenan           |       Owner:  jkeenan
     Type:  bug               |      Status:  new    
 Priority:  normal            |   Milestone:         
Component:  coding_standards  |     Version:  2.3.0  
 Severity:  medium            |    Keywords:         
     Lang:                    |       Patch:         
 Platform:                    |  
------------------------------+---------------------------------------------
 We appear to have a disagreement over whether a particular file in our
 distribution can both work and conform to our coding standards for code
 written in Perl 5.

 The file in question is ''tools/docs/filename_and_chapter.pl'', which was
 first contributed by gerd in r45489 on April 09.  The purpose of this
 program, according to the initial commit, is ''"to generate a PDF file as
 Parrot book from POD files."''

 mikehh fixed some coding standards failures in r45505 on April 10.
 Running `make codetest` two days ago, I noticed codingstd failures with
 this file, which I corrected in r46223 (trailing whitespace) and r46224
 (global filehandles; two-argument form of `open`).  I noted in my commit
 message that the file still failed to pass ''perlcritic.t'' due to use of
 subroutine prototypes.  In r46257, chromatic removed the unnecessary
 prototypes and did some other cleanup.

 But today in r46280, gerd reverted in one instance to a global filehandle
 and to the two-argument form of `open`, arguing in his commit message that
 the program did not work otherwise.
 {{{
 svn diff -r 46257 tools/docs/filename_and_chapter.pl
 # ...
 @@ -68,17 +68,20 @@

      open( my $IN_FH, '<', $item_list_ref->[$_[0]][0] ) or
          die( "$0: can't open $item_list_ref->[$_[0]][0] for reading
 ($!)\n" );
 -    open( my $OUT_FH, '>', "${MOD_BUILD_PATH}$item_list_ref->[$_[0]][0]"
 );
 +    open( OUT_FH, ">${MOD_BUILD_PATH}$item_list_ref->[$_[0]][0]" );  #
 <-- line 71

      # do the same as: sed -e '4,6c\=head0 $item_list_ref->[$i][1]'
      while( <$IN_FH> ) {
          if ( $icnt = (4..6) ) {
              if ( $icnt =~ /E0$/ ) {
 -                print( $OUT_FH "=head0 $item_list_ref->[$_[0]][1]\n");
 +                print( OUT_FH "=head0 $item_list_ref->[$_[0]][1]\n");
              }
          }
 -        else { print( $OUT_FH ); }
 +        else { print( OUT_FH ); }
      }
 +
 +    close( $IN_FH );
 +    close( OUT_FH );
  }
 }}}
 I suspect that we could move to the preferred, 3-argument form of `open`
 at line 71 without a problem.  But I don't see why we need to use a global
 filehandle to print output rather than the preferred lexically scoped
 filehandle.

 Since we've been back-and-forth on this via commit messages, I think we
 would be better off if we converted this discussion to a TT.

 Gerd,

 Could you elaborate a bit more on the purpose of this program and why it
 won't work with lexical filehandles?

 Thank you very much.

 kid51

-- 
Ticket URL: <https://trac.parrot.org/parrot/ticket/1609>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets

Reply via email to