Test::EOL - Check the correct line endings in your project


Test::EOL lets you check for the presence of trailing whitespace and/or windows line endings in your perl code. It reports its results in standard Test::Simple fashion:

  use Test::EOL tests => 1;
  eol_unix_ok( 'lib/', 'Module is ^M free');

and to add checks for trailing whitespace:

  use Test::EOL tests => 1;
  eol_unix_ok( 'lib/', 'Module is ^M and trailing whitespace free', { trailing_whitespace => 1 });

Module authors can include the following in a t/eol.t and have Test::EOL automatically find and check all perl files in a module distribution:

  use Test::EOL;


  use Test::EOL;
  all_perl_files_ok( @mydirs );

and if authors would like to check for trailing whitespace:

  use Test::EOL;
  all_perl_files_ok({ trailing_whitespace => 1 });


  use Test::EOL;
  all_perl_files_ok({ trailing_whitespace => 1 }, @mydirs );


This module scans your project/distribution for any perl files (scripts, modules, etc) for the presence of windows line endings.



  all_perl_files_ok( [ \%options ], [ @directories ] )

Applies eol_unix_ok() to all perl files found in @directories (and sub directories). If no <@directories> is given, the starting point is one level above the current running script, that should cover all the files of a typical CPAN distribution. A perl file is *.pl or *.pm or *.t or a file starting with #!...perl

Valid \%options currently are:

  • trailing_whitespace

    By default Test::EOL only looks for Windows (CR/LF) line-endings. Set this to true to raise errors if any kind of trailing whitespace is present in the file.

  • all_reasons

    Normally Test::EOL reports only the first error in every file (given that a text file originated on Windows will fail every single line). Set this a true value to register a test failure for every line with an error.

If the test plan is defined:

  use Test::EOL tests => 3;

the total number of files tested must be specified.


  eol_unix_ok ( $file [, $text] [, \%options ] )

Run a unix EOL check on $file. For a module, the path (lib/My/ or the name (My::Module) can be both used. $text is the diagnostic label emited after the ok/not ok TAP output. \%options takes the same values as described in "all_perl_files_ok".


A list of functions that can be exported. You can delete this section if you don't export anything, such as for a purely object-oriented module.


Shamelessly ripped off from Test::NoTabs.


Test::More, Test::Pod. Test::Distribution, Test:NoWarnings, Test::NoTabs, Module::Install::AuthorTests.


  • Arthur Axel 'fREW' Schmidt <>

  • Florian Ragwitz <>

  • Kent Fredric <>

  • Peter Rabbitson <>

  • Tomas Doran <>

  • Olivier Mengue <>


This software is copyright (c) 2012 by Tomas Doran.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.