Thank you for your comments, esp. named captures and proper use of dump.
When I run the code, the array ends up having nine separate scalar elements instead of three references to anonymous arrays containing three scalar elements each
Here's what I'm currently getting:
[ "/projects/2138137193/iblab?ref=discovery", 2138137193, "iBlab", "/projects/2060538158/nz-hosting?ref=discovery", 2060538158, "NZ Hosting", "/projects/1956727289/how-to-build-a-spaceship?ref=discovery", 1956727289, "How To Build A Spaceship", ]
Here's what I want:
[ [ "/projects/2138137193/iblab?ref=discovery", 2138137193, "iBlab" ], [ "/projects/2060538158/nz-hosting?ref=discovery", 2060538158, "NZ Hosting" ], [ "/projects/1956727289/how-to-build-a-spaceship?ref=discovery", 1956727289, "How To Build A Spaceship" ] ]
How is this possible given the constraint that the entire HTML content is a scalar (obtained via LWP)?
(I realize I can "post-process" the @projects array but I'd like to know if everything can be done in a single assignment without any munging afterward.)
#! perl -w use strict; use Data::Dump qw(dump); my $html = '<h6 class="project-title"><a href="/projects +/2138137193/iblab?ref=discovery" target="">iBlab</a></h6><h6 class="p +roject-title"><a href="/projects/2060538158/nz-hosting?ref=discovery" + target="">NZ Hosting</a></h6><h6 class="project-title"><a href="/pro +jects/1956727289/how-to-build-a-spaceship?ref=discovery" target="">Ho +w To Build A Spaceship</a></h6>'; my @projects = $html =~ m|<h6 class="project-title"><a href="(/project +s/(\d+)/.+?\?ref=discovery)" target="">(.+?)</a></h6>|g; dump \@projects;
In reply to Re^2: What is Perl way to simultaneously assign to three separate arrays?
by CoVAX
in thread What is Perl way to simultaneously assign to three separate arrays?
by CoVAX
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |