Search code examples
linuxperlpsrhel6

what does -w specifies in perl script process execution


When I was checking processes of perl using ps aux | grep perl the list of perl pid's got listed where its waiting in queue. so i started investigating how this processes got initiated /usr/local/bin/processLogs. I wanted to know what does -w meant in this process execution /usr/bin/perl -w /usr/local/bin/processLogs.

[root@test]# ps aux | grep perl
root      4223  1.6  0.0 132560  4576 ?        R    03:11   1:06 /usr/bin/perl -w /usr/local/bin/processLogs
root      4233  1.3  0.0 132560  4552 ?        R    03:11   0:55 /usr/bin/perl -w /usr/local/bin/processLogs
root      4246  1.1  0.0 132560  4552 ?        R    03:11   0:49 /usr/bin/perl -w /usr/local/bin/processLogs
root      4259  1.0  0.0 132560  4548 ?        R    03:11   0:44 /usr/bin/perl -w /usr/local/bin/processLogs
root      4272  0.8  0.0 132560  4544 ?        R    03:11   0:33 /usr/bin/perl -w /usr/local/bin/processLogs
root      4288  0.6  0.0 132560  4580 ?        R    03:11   0:28 /usr/bin/perl -w /usr/local/bin/processLogs

Solution

  • If you run perl -h you will get the help menu, where it says for -w:

      -w                enable many useful warnings
    

    This simply enables warnings. If this program is run in an automatic process, the warnings may be redirected to a log where you can read them. Assuming there are any warnings. You will need to refer to the program file processLogs to see what the program does.

    Typically, an experienced user will not use -w, but prefer to use the lexically scoped use warnings instead.

    The full output:

    $ perl -h
    
    Usage: perl [switches] [--] [programfile] [arguments]
      -0[octal]         specify record separator (\0, if no argument)
      -a                autosplit mode with -n or -p (splits $_ into @F)
      -C[number/list]   enables the listed Unicode features
      -c                check syntax only (runs BEGIN and CHECK blocks)
      -d[:debugger]     run program under debugger
      -D[number/list]   set debugging flags (argument is a bit mask or alphabets)
      -e program        one line of program (several -e's allowed, omit programfile)
      -E program        like -e, but enables all optional features
      -f                don't do $sitelib/sitecustomize.pl at startup
      -F/pattern/       split() pattern for -a switch (//'s are optional)
      -i[extension]     edit <> files in place (makes backup if extension supplied)
      -Idirectory       specify @INC/#include directory (several -I's allowed)
      -l[octal]         enable line ending processing, specifies line terminator
      -[mM][-]module    execute "use/no module..." before executing program
      -n                assume "while (<>) { ... }" loop around program
      -p                assume loop like -n but print line also, like sed
      -s                enable rudimentary parsing for switches after programfile
      -S                look for programfile using PATH environment variable
      -t                enable tainting warnings
      -T                enable tainting checks
      -u                dump core after parsing program
      -U                allow unsafe operations
      -v                print version, patchlevel and license
      -V[:variable]     print configuration summary (or a single Config.pm variable)
      -w                enable many useful warnings
      -W                enable all warnings
      -x[directory]     ignore text before #!perl line (optionally cd to directory)
      -X                disable all warnings
    

    Run 'perldoc perl' for more help with Perl.