G'day Helan_Ahmed,
Welcome to the Monastery.
The match operator (see Binding Operators) contains no internal whitespace, i.e. '=~' is correct; '= ~' is incorrect.
Here's how Perl parses that part of the code you posted:
$ perl -MO=Deparse,-p -e '$_= ~/ssId=\s*?(\S+)/' ($_ = (~/ssId=\s*?(\S+)/)); -e syntax OK
Removing the erroneous whitespace, and Perl now knows what you mean:
$ perl -MO=Deparse,-p -e '$_=~/ssId=\s*?(\S+)/' ($_ =~ /ssId=\s*?(\S+)/); -e syntax OK
Adding appropriate whitespace (around the operator) and both Perl and human readers know what you mean:
$ perl -MO=Deparse,-p -e '$_ =~ /ssId=\s*?(\S+)/' ($_ =~ /ssId=\s*?(\S+)/); -e syntax OK
[Aside: Please indicate updates at the place where the update was made. I see you mentioned the update elsewhere in the thread but, until I'd read that far, earlier responses to you original post made no sense. See "How do I change/delete my post?" for details and further explanation.]
Update (additional information): As you're new to Perl, the 'perl -MO=Deparse ...' line possibly means little to you. It's explained in B::Deparse.
— Ken
In reply to Re: Print multiple value from file
by kcott
in thread Print multiple value from file
by Helan_Ahmed
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |