Find the Best Cosmetic Hospitals

Explore trusted cosmetic hospitals and make a confident choice for your transformation.

“Invest in yourself — your confidence is always worth it.”

Explore Cosmetic Hospitals

Start your journey today — compare options in one place.

Why we use ‘use strict’ in perl

scmuser created the topic: Why we use ‘use strict’ in perl

Hi,

Why you should ‘use strict’? what is the significant of “strict” in out module?

rajeshkumar replied the topic: Re: Why we use ‘use strict’ in perl

Whenever your program gets over a few lines long, definitely when you can’t view the whole program on one page, or sometimes when you just can’t figure out what else could be wrong.

To help you catch typos so you can quickly get on to finding more significant problems (and so we don’t have to catch the typos for you either), among other reasons.
Its difficult to spot ‘$recieve_date’ when on the previous page you’ve been calling it ‘$receive_date’. Also, to give your variables as small a scope as possible so that you don’t have to worry about what they’re doing to other parts of your program (although that’s the function of my, it forces you to use my which when properly used helps achieve this goal).

Put this line at the top of your script (after the shebang, e.g., ‘#!/usr/bin/perl’ line):

use strict;
# Change this:
$string = "hello world";
@array = qw(ABC DEF);
%hash = (A=>1, B=>2);

# To this:
my $string = "hello world";
my @array = qw(ABC DEF);
my %hash = (A=>1, B=>2);

# Change this:
# '$name' is global here
foreach $name (@names) {
print "Name: $name\n";
}

# To this:
foreach my $name (@names) {
# Now '$name' only exists in this block
print "Name: $name\n";
}

# Change this:
# Likewise, '$digit' is global here
foreach $digit (@digits) {
$number = 10*$number + $digit;
}
print "Number: $number\n";

# To this (variables used in an outer scope ('$number')
# will have to be declared in an outer scope):
my $number = 0;
foreach my $digit (@digits)
# Now '$digit' only exists in this block
$number = 10*$number + $digit;
}
print "Number: $number\n";

# Change this:
sub my_sub {
($arg1, $arg2) = @_;
print "Arg1: $arg1 Arg2: $arg2\n";
}

# To this:
sub my_sub {
my ($arg1, $arg2) = @_;
print "Arg1: $arg1 Arg2: $arg2\n";
}

# Using DBI? You can change this:
$sth->bind_columns(\$field1, \$field2);
while ($sth->fetch) {
print "F1: $field1 F2: $field2\n";
}

# To this (the '\' is distributed over a list of values):
$sth->bind_columns(\my ($field1, $field2));
while ($sth->fetch) {
print "F1: $field1 F2: $field2\n";
}

Regards,
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

rajeshkumar replied the topic: Re: Why we use ‘use strict’ in perl

Some More Helpful info…

By default Perl allows you to use variables without declaring them. This may be convenient for short scripts and one-liners.But in a longer unit of code such as a module it is wise to declare your variables both to catch typos and to constrain their accessibility appropriately from outside the module. The strict pragmaforces you to declare your variables.

If no import list is supplied, all possible restrictions are assumed. (This is the safest mode to operate in, but is sometimes too strict for casual programming.) Currently, there are three possible things to be strict about: “subs”, “vars”, and “refs”.

strict refs
This generates a runtime error if you use symbolic references
1. use strict ‘refs’;
2. $ref = \$foo;
3. print $$ref; # ok
4. $ref = “foo”;
5. print $$ref; # runtime error; normally ok
6. $file = “STDOUT”;
7. print $file “Hi!”; # error; note: no comma after $file

strict vars

This generates a compile-time error if you access a variable that wasn’t declared via our or use vars , localized via my(), or wasn’t fully qualified. Because this is to avoid variable suicide problems and subtle dynamic scoping issues, a merely local() variable isn’t good enough.
1. use strict ‘vars’;
2. $X::foo = 1; # ok, fully qualified
3. my $foo = 10; # ok, my() var
4. local $foo = 9; # blows up
5.
6. package Cinna;
7. our $bar; # Declares $bar in current package
8. $bar = ‘HgS’; # ok, global declared via pragma

strict subs
This disables the poetry optimization, generating a compile-time error if you try to use a bareword identifier that’s not a subroutine, unless it is a simple identifier (no colons) and that it appears in curly braces or on the left hand side of the => symbol
1. use strict ‘subs’;
2. $SIG{PIPE} = Plumber; # blows up
3. $SIG{PIPE} = “Plumber”; # just fine: quoted string is always ok
4. $SIG{PIPE} = \&Plumber; # preferred form

Regards,
Rajesh Kumar
Twitt me @ twitter.com/RajeshKumarIn

Find Trusted Cardiac Hospitals

Compare heart hospitals by city and services — all in one place.

Explore Hospitals
I’m a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I have worked at <a href="https://www.cotocus.com/">Cotocus</a>. I share tech blog at <a href="https://www.devopsschool.com/">DevOps School</a>, travel stories at <a href="https://www.holidaylandmark.com/">Holiday Landmark</a>, stock market tips at <a href="https://www.stocksmantra.in/">Stocks Mantra</a>, health and fitness guidance at <a href="https://www.mymedicplus.com/">My Medic Plus</a>, product reviews at <a href="https://www.truereviewnow.com/">TrueReviewNow</a> , and SEO strategies at <a href="https://www.wizbrand.com/">Wizbrand.</a> Do you want to learn <a href="https://www.quantumuting.com/">Quantum Computing</a>? <strong>Please find my social handles as below;</strong> <a href="https://www.rajeshkumar.xyz/">Rajesh Kumar Personal Website</a> <a href="https://www.youtube.com/TheDevOpsSchool">Rajesh Kumar at YOUTUBE</a> <a href="https://www.instagram.com/rajeshkumarin">Rajesh Kumar at INSTAGRAM</a> <a href="https://x.com/RajeshKumarIn">Rajesh Kumar at X</a> <a href="https://www.facebook.com/RajeshKumarLog">Rajesh Kumar at FACEBOOK</a> <a href="https://www.linkedin.com/in/rajeshkumarin/">Rajesh Kumar at LINKEDIN</a> <a href="https://www.wizbrand.com/rajeshkumar">Rajesh Kumar at WIZBRAND</a> <a href="https://www.rajeshkumar.xyz/dailylogs">Rajesh Kumar DailyLogs</a>

Related Posts

What is Perl and use cases of Perl?

What is Perl? Perl is a high-level, general-purpose programming language known for its flexibility, ease of use, and powerful text manipulation capabilities. Originally developed by Larry Wall…

Read More

What is Perl and How it works? An Overview and Its Use Cases

Hey, this is Ashwani, and in this article I’m going to share some important things about Perl. As you see in the heading everything is clear to…

Read More

Introdcution of Perl

What is Perl Perl is a programming language, It’s Object Oriented, simple to learn and very powerful. Perl stand for: “Practical Extraction and Reporting Language”. Perl is…

Read More

Remove Control ^M from files

tpatil created the topic: Remove Control ^M from files Single file method perl -pi -e “s/\r//” filename.txt Multiple File Method find . -type f -exec perl -pi…

Read More

I need to a perl script

rajeshkumar created the topic: i need to a perl script Hi , There is a file called test.txt what are all the different ways BEGIN: test 1…

Read More

The difference between my and local

rajeshkumar created the topic: The difference between my and local There is a subtle difference. In the example below, $::a refers to $a in the ‘global’ namespace….

Read More
Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x