perldoc, verbose 2 keine Ausgabe mehr bei embedded POD

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
raiserle
Beiträge: 14
Registriert: 07.12.2009 13:57:51

perldoc, verbose 2 keine Ausgabe mehr bei embedded POD

Beitrag von raiserle » 02.04.2018 15:49:40

Hi,

ich habe ein Perl-Script, mit eingebetteter Dokumentation, welches auf mein Debian "etch" wunderbar läuft.
Ich habe "etch" auch in einer VM nochmal installiert und das Skript getestet, kein Problem, die Doku darstellen zu lassen.
Das selbe Skript auf "strech": keine Dokumentation wird ausgegeben.

Getestet auf beiden System mit folgenden Script:

Code: Alles auswählen

#! /usr/bin/perl
use Getopt::Long;
use Pod::Usage;
&GetOptions( 'h|help' => \$opt_help,
                     'm|man' => sub{ pod2usage({-verbose=>2,
                                                               -exitval=>0}); },
                    ) || pod2usage(1);

if($opt_help){
    print "help---------------\n";
    pod2usage(1);
 }

__END__

=head1 NAME

doctest.pl - Testscript!

=head1 SYNOPSIS

doctest.pl [options]

 Options:
   -h, --help            brief help message
   -m --man            full documentation

=cut
Mit PERLDOCDEBUG=1:

auf etch:

Code: Alles auswählen

./doctest.pl -m
'opt_o_with: Noting "text" as desired output format...
'opt_o_with: Noting "man" as desired output format...
'GetOptsOO::getopts: Starting switch processing.  Scanning arguments [-F ./doctest.pl]
'GetOptsOO::getopts: Ending switch processing.  Args are [./doctest.pl] with 0 errors.
'process: /usr/bin/perldoc => Pod::Perldoc v3.14_02
OK, I dropped privileges.
'process:
'find_good_formatter_class: Formatter class Pod::Perldoc::ToMan successfully loaded!
'find_good_formatter_class: Will format with the class Pod::Perldoc::ToMan
'grand_search_init: Searching for ./doctest.pl
About to run /usr/bin/pod2man  --lax ./doctest.pl | nroff -man
filter_nroff isn't set, so not filtering.
Finished writing to /tmp/dx8z54qSZY.
'page: About to try calling /usr/bin/sensible-pager /tmp/dx8z54qSZY
auf strech:

Code: Alles auswählen

./doctest.pl -m
'opt_o_with: Noting "text" as desired output format...
'opt_o_with: Considering Pod::Perldoc::Totext
'opt_o_with: Considering Pod::Perldoc::Totext
'opt_o_with: Considering Pod::Perldoc::ToText
'opt_o_with: Considering Pod::Perldoc::ToTEXT
'opt_o_with: Considering Pod::Simple::text
'opt_o_with: Considering Pod::Simple::text
'opt_o_with: Considering Pod::Simple::Text
'opt_o_with: Considering Pod::Simple::TEXT
'opt_o_with: Considering Pod::text
'opt_o_with: Considering Pod::text
'opt_o_with: Considering Pod::Text
'opt_o_with: Considering Pod::TEXT
'opt_o_with: Noting "term" as desired output format...
'opt_o_with: Considering Pod::Perldoc::Toterm
'opt_o_with: Considering Pod::Perldoc::Toterm
'opt_o_with: Considering Pod::Perldoc::ToTerm
'opt_o_with: Considering Pod::Perldoc::ToTERM
'opt_o_with: Considering Pod::Simple::term
'opt_o_with: Considering Pod::Simple::term
'opt_o_with: Considering Pod::Simple::Term
'opt_o_with: Considering Pod::Simple::TERM
'opt_o_with: Considering Pod::term
'opt_o_with: Considering Pod::term
'opt_o_with: Considering Pod::Term
'opt_o_with: Considering Pod::TERM
'GetOptsOO::getopts: Starting switch processing.  Scanning arguments [-F ./doctest.pl]
'GetOptsOO::getopts: Ending switch processing.  Args are [./doctest.pl] with 0 errors.
'pagers_guessing: Pagers: /usr/bin/sensible-pagermorelesspgviewcat'process: /usr/bin/perldoc => Pod::Perldoc v3.2503
Attempting to drop privs...
OK, I dropped privileges.
'process:
'find_good_formatter_class: Formatter class Pod::Perldoc::ToTerm version 3.25 successfully loaded!
'find_good_formatter_class: Will format with the class Pod::Perldoc::ToTerm
'grand_search_init: Searching for ./doctest.pl
Er bricht bei "stretch" nach "grand_search_init" einfach ab. Das selbe sieht man auch, wenn man es über den Debugger laufen lässt.

Code: Alles auswählen

perl -d `which perldoc` -F ./doctest.pl

Loading DB routines from perl5db.pl version 1.49_05
Editor support available.

Enter h or 'h h' for help, or 'man perldebug' for more help.

main::(/usr/bin/perldoc:2):         eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
main::(/usr/bin/perldoc:3):             if 0;
  DB<1> n
main::(/usr/bin/perldoc:7):     require 5;
main::(/usr/bin/perldoc:8):     BEGIN {
  DB<1> n
main::(/usr/bin/perldoc:13):    exit( Pod::Perldoc->run() );
  DB<1> n
'opt_o_with: Noting "text" as desired output format...
'opt_o_with: Considering Pod::Perldoc::Totext
'opt_o_with: Considering Pod::Perldoc::Totext
'opt_o_with: Considering Pod::Perldoc::ToText
'opt_o_with: Considering Pod::Perldoc::ToTEXT
'opt_o_with: Considering Pod::Simple::text
'opt_o_with: Considering Pod::Simple::text
'opt_o_with: Considering Pod::Simple::Text
'opt_o_with: Considering Pod::Simple::TEXT
'opt_o_with: Considering Pod::text
'opt_o_with: Considering Pod::text
'opt_o_with: Considering Pod::Text
'opt_o_with: Considering Pod::TEXT
'opt_o_with: Noting "term" as desired output format...
'opt_o_with: Considering Pod::Perldoc::Toterm
'opt_o_with: Considering Pod::Perldoc::Toterm
'opt_o_with: Considering Pod::Perldoc::ToTerm
'opt_o_with: Considering Pod::Perldoc::ToTERM
'opt_o_with: Considering Pod::Simple::term
'opt_o_with: Considering Pod::Simple::term
'opt_o_with: Considering Pod::Simple::Term
'opt_o_with: Considering Pod::Simple::TERM
'opt_o_with: Considering Pod::term
'opt_o_with: Considering Pod::term
'opt_o_with: Considering Pod::Term
'opt_o_with: Considering Pod::TERM
'GetOptsOO::getopts: Starting switch processing.  Scanning arguments [-F ./doctest.pl]
'GetOptsOO::getopts: Ending switch processing.  Args are [./doctest.pl] with 0 errors.
'pagers_guessing: Pagers: /usr/bin/sensible-pagermorelesspgviewcat'process: /usr/bin/perldoc => Pod::Perldoc v3.2503
Attempting to drop privs...
OK, I dropped privileges.
'process:
'find_good_formatter_class: Formatter class Pod::Perldoc::ToTerm version 3.25 successfully loaded!
'find_good_formatter_class: Will format with the class Pod::Perldoc::ToTerm
'grand_search_init: Searching for ./doctest.pl
Debugged program terminated.  Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.
Pager ist auch gesetzt:

Code: Alles auswählen

 DB<1> o
          CommandSet = '580'
            HistFile = 'N/A'
            HistSize = 'N/A'
           hashDepth = 'N/A'
          arrayDepth = 'N/A'
           dumpDepth = 'N/A'
         DumpDBFiles = 'N/A'
        DumpPackages = 'N/A'
          DumpReused = 'N/A'
         compactDump = 'N/A'
         veryCompact = 'N/A'
               quote = 'N/A'
             HighBit = 'N/A'
          undefPrint = 'N/A'
           globPrint = 'N/A'
            PrintRet = '1'
           UsageOnly = 'N/A'
               frame = '0'
           AutoTrace = '0'
                 TTY = '/dev/tty'
               noTTY = 'N/A'
            ReadLine = '1'
             NonStop = '0'
            LineInfo = '/dev/tty'
         maxTraceLen = '400'
       recallCommand = '!'
           ShellBang = '!'
               pager = '|/usr/bin/sensible-pager'
           tkRunning = 'N/A'
           ornaments = 'us,ue,,'
         signalLevel = '1'
           warnLevel = '1'
            dieLevel = '1'
        inhibit_exit = '1'
       ImmediateStop = 'N/A'
       bareStringify = 'N/A'
           CreateTTY = '3'
          RemotePort = 'N/A'
          windowSize = '10'
        DollarCaretP = 'PERLDBf_SUB|PERLDBf_LINE|PERLDBf_NOOPT|PERLDBf_INTER|PERLDBf_SUBLINE|PERLDBf_SINGLE|PERLDBf_NAMEEVAL|PERLDBf_NAMEANON|PERLDBf_SAVESRC'
Für die embedded functions geht Perldoc:

Code: Alles auswählen

perldoc -f sort
und erzeugt auch eine formatierte Ausgabe.


Was mache ich falsch bei "stretch"? Oder was muss ich noch setzen (ENV, etc.)?

Viele Grüße
Henrik

raiserle
Beiträge: 14
Registriert: 07.12.2009 13:57:51

Re: perldoc, verbose 2 keine Ausgabe mehr bei embedded POD

Beitrag von raiserle » 03.04.2018 20:06:09

Update:

Ich habe das selbe Skript nach "/root/scripte/ssltest/" verschoben. Danach habe ich das Skript per

Code: Alles auswählen

cd /root/scripte/ssltest/
./doctest.pl -m
aufgerufen.... und es geht.


Wenn ich das Skript aber aus einem anderen Verzeichnis aufrufe

Code: Alles auswählen

cd /
./root/scripte/ssltest/doctest.pl -m
oder auch

Code: Alles auswählen

cd /
./root/scripte/ssltest/doctest.pl -m
.. dann geht es nicht.

Der Ordner "/root/scripte/ssltest/" steht in keiner ENV, oder sonst wo... nur hat der Ordner CHMOD 744.
Kann dieses Phänomen jemand nachstellen, bzw hat dafür eine Lösung.


vG
Henrik

Antworten