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 Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms. I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.

Related Posts

Perl Punctuation and Sigils: Practical Symbol Reference with Examples

A clear reference to the punctuation marks you see most often in Perl code, including sigils, operators, delimiters, and quote forms. Includes usage tables, example snippets, and a quick decision flow for choosing the right sigil.

Read More

Executing External Commands in Perl: system, exec, backticks, and open Explained

Perl provides multiple ways to run external commands, and each one behaves differently. This guide shows when to use system, exec, backticks, or open, with safe patterns for output capture and exit-code handling.

Read More

Perl use vs require: Compile-Time and Runtime Module Loading Explained

In Perl, `use` and `require` both load code, but they do it at different times and with different side effects. This guide shows when each is appropriate, how imports work, and patterns that avoid common production bugs.

Read More

Perl File Test Operators Explained for DevOps Automation

Perl’s built-in file test operators let you check existence, type, size, permissions, and ownership without external commands. This guide explains the operators, real vs effective ID checks, and production-friendly patterns for automation scripts.

Read More

Perl in DevOps: Practical Overview, Use Cases, and Trade-offs

Perl remains a practical language for text-heavy automation, systems glue code, and legacy infrastructure work. This guide explains where Perl fits, how it compares with Bash and Python, and how to get started with real commands.

Read More

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
Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
0
Would love your thoughts, please comment.x
()
x