1898184e3Ssthen#!/usr/bin/env perl 2898184e3Ssthenuse 5.010; 3898184e3Ssthenuse open qw< :encoding(utf8) :std >; 4898184e3Ssthenuse autodie; 5898184e3Ssthenuse strict; 6898184e3Ssthenuse File::Find; 7898184e3Ssthenuse Encode::Guess; 8898184e3Ssthen 9898184e3Ssthen# Check if POD files contain non-ASCII without specifying 10898184e3Ssthen# =encoding. Run it as: 11898184e3Ssthen 12898184e3Ssthen## perl Porting/checkpodencoding.pl 13898184e3Ssthen 14898184e3Ssthenfind( 15898184e3Ssthen { 16898184e3Ssthen wanted => \&finder, 17898184e3Ssthen no_chdir => 1, 18898184e3Ssthen }, 19898184e3Ssthen '.' 20898184e3Ssthen); 21898184e3Ssthen 22898184e3Ssthensub finder { 23898184e3Ssthen my $file = $_; 24898184e3Ssthen 25*6fb12b70Safresh1 return if -d $file or -B $file; 26898184e3Ssthen 27898184e3Ssthen open my $fh, '<', $file; 28898184e3Ssthen 29898184e3Ssthen #say STDERR "Checking $file"; 30898184e3Ssthen 31898184e3Ssthen next if 32898184e3Ssthen # Test cases 3391f110e0Safresh1 $file =~ m[Pod-Simple/t]; 34898184e3Ssthen 35898184e3Ssthen my ($in_pod, $has_encoding, @non_ascii); 36898184e3Ssthen 37898184e3Ssthen FILE: while (my $line = <$fh>) { 38898184e3Ssthen chomp $line; 3991f110e0Safresh1 if ($line =~ /^=[a-z]+/) { 40898184e3Ssthen $in_pod = 1; 41898184e3Ssthen } 42898184e3Ssthen 43898184e3Ssthen if ($in_pod) { 4491f110e0Safresh1 if ($line =~ /^=encoding (\S+)/) { 45898184e3Ssthen $has_encoding = 1; 46898184e3Ssthen last FILE; 4791f110e0Safresh1 } elsif ($line =~ /[^[:ascii:]]/) { 48898184e3Ssthen my $encoding = guess_encoding($line); 49898184e3Ssthen push @non_ascii => { 50898184e3Ssthen num => $., 51898184e3Ssthen line => $line, 52898184e3Ssthen encoding => (ref $encoding ? "$encoding->{Name}?" : 'unknown!'), 53898184e3Ssthen }; 54898184e3Ssthen } 55898184e3Ssthen } 56898184e3Ssthen 5791f110e0Safresh1 if ($line =~ /^=cut/) { 58898184e3Ssthen $in_pod = 0; 59898184e3Ssthen } 60898184e3Ssthen } 61898184e3Ssthen 62898184e3Ssthen if (@non_ascii and not $has_encoding) { 63898184e3Ssthen say "$file:"; 64898184e3Ssthen $DB::single = 1; 65898184e3Ssthen for (@non_ascii) { 66898184e3Ssthen say " $_->{num} ($_->{encoding}): $_->{line}"; 67898184e3Ssthen } 68898184e3Ssthen } 69898184e3Ssthen} 70