in reply to Re^2: UrlLib and urllib2 python to perl
in thread UrlLib and urllib2 python to perl

How could the below part be done in perl? the function of re.search

1) determine what it does in python 2) perlintro#More complex regular expressions /perlrequick/split

  • Comment on Re^3: UrlLib and urllib2 python to perl

Replies are listed 'Best First'.
Re^4: UrlLib and urllib2 python to perl
by soonix (Chancellor) on Aug 13, 2013 at 10:59 UTC

    To help with the first question that our fellow Anonymonk named: it tries to match the regex (first parameter) in the string (second parameter). .group(0) returns the matched string.

    Differences between Python and Perl:

    • Python's regexes are written as strings, so there are different escape rules. in a perl regex, no need to escape the quotes, the first regex could simply be written as
      /name="id" value="[A-Za-z0-9]*" size=/
    • to receive the complete matched string, in perl you would use $& or modify the regex with the /p flag and then use ${^MATCH}.

    The python code then splits the found match to extract the part after value=. I would use a group instead, even in Python. I would write

    for (qw(id param1 param2 sessId) { $response_data =~ /name="$_" value="([A-Za-z0-9]*)" size=/; $v[$_] = $1; }
    Although afterwards the values aren't in variables $id, $param1, etc but in $v["id"] etc, however this might come in handy anyway, because most probably the things you will be doing to each of them will be similiar, and you can do them by employing similiar loops.