Perl strict


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl strict
# 1  
Old 01-14-2009
Perl strict

What is the sake of using `use strict;` in perl codes? and how can avoid it?.TnX.
# 2  
Old 01-14-2009
From perldoc strict: Perl pragma to restrict unsafe constructs

It's normally used to ensure that all variables/subs/references that you use are used in a clean manner, eg. variables are defined before access. And I don't think anyone should avoid it, as it reports a good deal of possible problems that you would waste time over debugging otherwise.
# 3  
Old 01-14-2009
The "strict" pragma makes it an error to use various potentially unsafe or confusing code constructs. Type man 3 strict to find out which ones. Unless you have a very good reason for using such constructs, you should use "use strict". If you have a good enough reason. you can locally override the restrictions with (e.g.)
Code:
no strict "subs";

because pragmata are lexically scoped.
# 4  
Old 01-14-2009
pludi and spirtle thanks and have a nice day SmilieSmilie.
# 5  
Old 01-14-2009
If you don't use the strict pragma in a Perl programme all the variables you define (or rather introduce) become implicitly package globals that appear in the symbol table.
At first glance this might tremendously ease the coding (for the novice) but this also is hugely error prone, especially to typos.
So if you inadvertently misspell a variable without strict the Perl compiler would silently declare a new package global without the faintest sign of warning, but this most of the times is pretty useless or even detrimental and will break your programme logic since you intended to refer to some previously declared and defined variable.
Instead when you use strict the Perl compiler will immediately abort compilation and issue an error message hinting at the reason and line which violated the syntax.
Besides, it is considered bad programming style to use global variables,
and one should almost always use lexically scoped variables (those declared by my)
Therefore, even the seasoned Perl programmer should always have the use strict; line at the beginning at their code, and that is one vital marker that indicates good Perl code.
# 6  
Old 01-14-2009
buffoonix thanks for this fundamental description.It's coool. Smilie
# 7  
Old 01-14-2009
Quote:
Originally Posted by buffoonix
Therefore, even the seasoned Perl programmer should always have the use strict; line at the beginning at their code, and that is one vital marker that indicates good Perl code.
Bah.

Most of perl these days is modularized, with variables accessed through AUTOLOAD functions or entries in hash tables, for which "use strict" is useless.

In my opinion, if you have to use "strict", you're probably using the wrong programming language.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Programming

PERL: In a perl-scripttTrying to execute another perl-script that SETS SOME VARIABLES !

I have reviewed many examples on-line about running another process (either PERL or shell command or a program), but do not find any usefull for my needs way. (Reviewed and not useful the system(), 'back ticks', exec() and open()) I would like to run another PERL-script from first one, not... (1 Reply)
Discussion started by: alex_5161
1 Replies

2. Shell Programming and Scripting

Perl : Getopts and Strict -How to solve

How do I get past the error when using strict and GetOpts ? #!/usr/bin/perl use strict; use Getopt::Std; # Process the command line options die "Usage: $0 -r <router> -u <username> -p <password> -e <enable password>\n" if (@ARGV < 6); exit if (!getopts('r:u:p:e:')); my... (3 Replies)
Discussion started by: popeye
3 Replies

3. UNIX for Advanced & Expert Users

Ssh disable strict checking

What are the different ways to disable ssh strict checking? I've seen this mentioned a few times but it doesn't seem to be working. $ ssh -o 'StrictHostKeyChecking no' admin@hostnamehttp://docs.oracle.com/cd/E35328_01/E35336/html/vmcli-ssh.html Is there a file somewhere in /etc that I could... (4 Replies)
Discussion started by: cokedude
4 Replies

4. Shell Programming and Scripting

Help! Can't locate strict.pm after Cygwin update

I installed gcc4 today using setup.exe from cygwin. However, I cannot run any of my perl program after that. For example, Run@Run-THINK /home $ perl Process.pl Can't locate strict.pm in @INC (@INC contains: /usr/lib/perl5/5.10/i686-cygwin / usr/lib/perl5/5.10... (0 Replies)
Discussion started by: littledeer
0 Replies

5. UNIX for Advanced & Expert Users

perl and HP-UX : instmodsh in combination with software depot : update inventory for installed Perl

we create a HP-UX software depot with a new perl-modul. after installation of the software depot, the perl module i can't find with instmodsh in the inventory for installed Perl modules. - i have learned of using instmodsh command : i find out what modules are already installed on my system. ... (0 Replies)
Discussion started by: bora99
0 Replies

6. Shell Programming and Scripting

Perl :How to print the o/p of a Perl script on console and redirecting same in log file @ same time.

How can i print the output of a perl script on a unix console and redirect the same in a log file under same directory simultaneously ? Like in Shell script, we use tee, is there anything in Perl or any other option ? (2 Replies)
Discussion started by: butterfly20
2 Replies

7. Shell Programming and Scripting

New PERL guru's help on strict.pm

I opened strict.pm and found some not understandable stuff, please let me know if you have any Idea on the same. 1) Line 23 => $bits |= (what is $= here how it affect the statement) 2) Line 36 => $^H (what is that I haven't found any statement on this in google) 3) Line 41 =>... (3 Replies)
Discussion started by: jatanig
3 Replies

8. Shell Programming and Scripting

Passing date formats in Perl: i.e. Jul/10/2007 -> 20070710 (yyyymmdd) - Perl

Hi , This script working for fine if pass script-name.sh Jul/10/2007 ,I want to pass 20070710(yyyymmdd) .Please any help it should be appereciated. use Time::Local; my $d = $ARGV; my $t = $ARGV; my $m = ""; @d = split /\//, $d; @t = split /:/, $t; if ( $d eq "Jan" ) { $m = 0 }... (7 Replies)
Discussion started by: akil
7 Replies

9. Shell Programming and Scripting

Strict Argument

Im trying to write a bash script that has an if statment that when the user enters ONLY that exact argument, will echo what follows that conditon. For example: for file in $1 do if then Var1=$(cat hello | egrep "that pattern" | awk '{ print $NF }') cat $Var1 fi done Basically,... (3 Replies)
Discussion started by: oxoxo
3 Replies
Login or Register to Ask a Question