Perl qr function usage


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl qr function usage
# 1  
Old 05-09-2018
Perl qr function usage

I'm not sure why I'm having so much trouble with this.
I think I'm really not understanding how this works.

I'm trying to store a regex in a variable for use later in a script.

Can someone tell me why this doesn't match???
Code:
#!/usr/bin/perl
#
#
#
$ticket=1212;

my $rx_ticket = qr/^\d{4}$/;

if ($ticket !~ /$rx_ticket/) {
        print "It matches\n";
}
else {
        print "No match\n";
}


print "Finished\n\n";
print "$ticket\n";

I expected it to match, but I get the following output:

Code:
$ ./ticket.pl
No match
Finished

1212

What am I not understanding here???
I'm sure it something simple.

Thanks
# 2  
Old 05-09-2018
Quote:
Originally Posted by timj123
...
I'm trying to store a regex in a variable for use later in a script.
Can someone tell me why this doesn't match???
Code:
#!/usr/bin/perl
#
#
#
$ticket=1212;

my $rx_ticket = qr/^\d{4}$/;

if ($ticket !~ /$rx_ticket/) {
        print "It matches\n";
}
else {
        print "No match\n";
}


print "Finished\n\n";
print "$ticket\n";

I expected it to match, but I get the following output:

Code:
$ ./ticket.pl
No match
Finished

1212

...
...
It's actually working correctly.
The !~ operator returns true if the pattern match fails.
The =~ operator returns true if the pattern match succeeds.

You may want to take note that the ! character is typically used to reverse the sense of comparison, to negate the comparison. For example, == is for numeric comparison and returns true if two numbers are equal, and != returns true if two numbers are unequal.

More information is in the Perl documentation.
http://perldoc.perl.org/perlop.html#Binding-Operators

And here are a couple of test cases:

Code:
$ 
$ perl -le '$ticket = 1212;
            $rx_ticket = qr/^\d{4}$/;
            # ==================================================
            # !~ returns true if scalar does not match pattern
            # =~ returns true if scalar matches pattern
            # ==================================================
            if ($ticket =~ /$rx_ticket/){
                print "It matches\n";
            } else {
                print "No match\n";
            }
            print "Finished\n";
            print "$ticket\n";
           '
It matches

Finished

1212

$ 
$ 
$ perl -le '$ticket = "12ABC12";
            $rx_ticket = qr/^\d{4}$/;
            # ==================================================
            # !~ returns true if scalar does not match pattern
            # =~ returns true if scalar matches pattern
            # ==================================================
            if ($ticket !~ /$rx_ticket/){
                print "It does not match\n";
            } else {
                print "It matches\n";
            }
            print "Finished\n";
            print "$ticket\n";
           '
It does not match

Finished

12ABC12

$ 
$

This User Gave Thanks to durden_tyler For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Converting shell to Perl I run into shell built in function trap and need alternative in Perl

I am working on converting shell to Perl script. In shell we have built in function trap Do you know alternative in Perl or actually we don't need it? Thanks for contribution (3 Replies)
Discussion started by: digioleg54
3 Replies

2. Shell Programming and Scripting

Usage of shell variable in perl command

Hi, I have a shell script, In which i have variable "var1" and some perl command inside shell script. export var1='coep -n rst-a2p-hinje.vci.all.com -c' perl -pi -e 's/^/coep -n rst-a2p-hinje.vci.all.com -c /' command.txt currently I am adding value of var1 in command.txt file by... (2 Replies)
Discussion started by: rakeshtomar82
2 Replies

3. Shell Programming and Scripting

Usage of $$ and @_ in perl

Hi I have some doubts with below perl script sub program . In the below code what are below lines do ? 1. ($user, $server, $os, $version, $ref_path, $ref_line, $ref_ftp) = @_; 2. if ( -e "/usr/kerberos/bin/krsh" ) 3. $$ref_path = "/usr/kerberos/bin" unless ($$ref_path);why we are... (1 Reply)
Discussion started by: ptappeta
1 Replies

4. HP-UX

Perl script limit cpu usage

Hi Experts, I am executing multiple instances(in parallel) of perl script on HP-UX box. OS is allocating substantial amount of CPU to these perl processes,resulting higher cpu utilization. Glance always shows perl processes are occupying majority of the CPU resource. It is causing slower... (2 Replies)
Discussion started by: sai_2507
2 Replies

5. Shell Programming and Scripting

usage of AWK command under perl script

i have two files as shown below t1.txt: argument1 argu2 argu37 t2.txt: 22 33 44 i want o/p as argument1 22 argu2 33 argu37 44 i am trying to merge two file under perl script using following system("paste t1.txt t2.txt | awk... (3 Replies)
Discussion started by: roopa
3 Replies

6. Shell Programming and Scripting

Perl Array / pattern match large CPU usage

Hi, I have one file in this format 20 value1 33 value2 56 value3 I have another file in this format: 34,30-SEP-09,57,100237775,33614510126,2,34 34,30-SEP-09,57,100237775,33620766654,2,34 34,30-SEP-09,108,100237775,33628458122,2,34 34,30-SEP-09,130,100237775,33635266741,2,254... (6 Replies)
Discussion started by: Donkey25
6 Replies

7. AIX

How to monitor the IBM AIX server for I/O usage,memory usage,CPU usage,network..?

How to monitor the IBM AIX server for I/O usage, memory usage, CPU usage, network usage, storage usage? (3 Replies)
Discussion started by: laknar
3 Replies

8. HP-UX

how can I find cpu usage memory usage swap usage and logical volume usage

how can I find cpu usage memory usage swap usage and I want to know CPU usage above X% and contiue Y times and memory usage above X % and contiue Y times my final destination is monitor process logical volume usage above X % and number of Logical voluage above can I not to... (3 Replies)
Discussion started by: alert0919
3 Replies

9. Shell Programming and Scripting

Perl Split Command usage

Hi, I am trying to use the split commad to seperate string reading from file. but it dosent give me a correct result. can some body tell me what is the wrong in following scritp. #!/usr/bin/perl -w #use CGI qw(:standard); ... (2 Replies)
Discussion started by: maheshsri
2 Replies

10. Solaris

memory usage function

Hi all, I am developing a C++ application on Sun Solaris. Is there any function bundled in the C++ library that can display memory usages of a process? I dont want use command. Many thanks. Lan (1 Reply)
Discussion started by: lanchen
1 Replies
Login or Register to Ask a Question