in reply to Print multiple value from file
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
|
|---|