CGI/Perl Guide | Learning Center | Forums | Advertise | Login
Site Search: in

  Main Index MAIN
INDEX
Search Posts SEARCH
POSTS
Who's Online WHO'S
ONLINE
Log in LOG
IN

Home: Perl Programming Help: Beginner:
Meaning of -w and qw

 



PerlUser12
Novice

Oct 27, 2012, 6:57 AM

Post #1 of 4 (2520 views)
Meaning of -w and qw Can't Post

Hi all,

I have a basic question! Please help me understand.

What is the purpose of -w switch and qw? And what would be the difference if we dont include in the program?

Thanks!


FishMonger
Veteran / Moderator

Oct 27, 2012, 7:25 AM

Post #2 of 4 (2518 views)
Re: [PerlUser12] Meaning of -w and qw [In reply to] Can't Post

The -w switch enables warnings. It is described in perlrun, which is accessed via the perldoc command.
e.g.

Code
c:\>perldoc perlrun 
NAME
perlrun - how to execute the Perl interpreter

SYNOPSIS
perl [ -sTtuUWX ] [ -hv ] [ -V[:*configvar*] ]
[ -cw ] [ -d[t][:*debugger*] ] [ -D[*number/list*] ]
[ -pna ] [ -F*pattern* ] [ -l[*octal*] ] [ -0[*octal/hexadecimal*] ]
[ -I*dir* ] [ -m[-]*module* ] [ -M[-]*'module...'* ] [ -f ]
[ -C [*number/list*] ] [ -S ] [ -x[*dir*] ] [ -i[*extension*] ]
[ [-e|-E] *'command'* ] [ -- ] [ *programfile* ] [ *argument* ]...

DESCRIPTION
The normal way to run a Perl program is by making it directly
executable, or else by passing the name of the source file as an
argument on the command line. (An interactive Perl environment is also
possible--see perldebug for details on how to do that.) Upon startup,
Perl looks for your program in one of the following places:

....
....

or online at: http://perldoc.perl.org/perlrun.html
Quoted from that doc:

Quote
-w

prints warnings about dubious constructs, such as variable names mentioned only once and scalar variables used before being set; redefined subroutines; references to undefined filehandles; filehandles opened read-only that you are attempting to write on; values used as a number that don't look like numbers; using an array as though it were a scalar; if your subroutines recurse more than 100 deep; and innumerable other things.

This switch really just enables the global $^W variable; normally, the lexically scoped use warnings pragma is preferred. You can disable or promote into fatal errors specific warnings using __WARN__ hooks, as described in perlvar and warn. See also perldiag and perltrap. A fine-grained warning facility is also available if you want to manipulate entire classes of warnings; see warnings or perllexwarn.


As mentioned in the doc, it's better to use the warnings pragma instead of the -w switch. You should also be using the strict pragma, so every perl script you write should have these 2 lines after the shebang line.

Code
use strict; 
use warnings;

Those 2 pragmas will point out lots of common mistakes in your code, which aides in writing better quality code.

qw is one of the quote operators and is covered in perldoc perlop under the "Quote and Quote-like Operators " section. http://perldoc.perl.org/perlop.html

One of the ways it can be used is when assigning values to an array.

Code
my @array = qw( one two three );



(This post was edited by FishMonger on Oct 27, 2012, 7:28 AM)


Laurent_R
Veteran / Moderator

Oct 27, 2012, 7:34 AM

Post #3 of 4 (2515 views)
Re: [PerlUser12] Meaning of -w and qw [In reply to] Can't Post

Hi,

The -w enables warnings, which is a very good thing to do because it point you to errors in your program, except that this is a slightly outdated (and somewhat deprecated) way of enabling the warnings. Nowodays, the best way to do it is to use the following pragma:


Code
use warnings;


The qw (quote words) statement is synctatic sugar to define an array of strings.


Code
@array = qw/foo bar . . ./;

or

Code
@array = qw(foo bar . . .);


is the same as

Code
@array = (’foo’, ’bar’,. . .).


Basically, you avoid having to type the single quotes and the commas. There is nothing more to it.

EDIT: Fishmonger was faster than me. ;-)


(This post was edited by Laurent_R on Oct 27, 2012, 7:37 AM)


PerlUser12
Novice

Oct 27, 2012, 11:21 AM

Post #4 of 4 (2508 views)
Re: [Laurent_R] Meaning of -w and qw [In reply to] Can't Post

Thanks to FishMonger and Laurent_R. Your explanations with sample codes and links is very helpful :)

 
 


Search for (options) Powered by Gossamer Forum v.1.2.0

Web Applications & Managed Hosting Powered by Gossamer Threads
Visit our Mailing List Archives