嗨,所以我最终要做的就是从表格中的textarea获取用户输入(方法POST)并基本上逐行读取并将行存储在一种状态变量或计数器中,直到空白命中行,并将状态变量的值作为一个元素压入数组。然后在此之后重置状态变量,并且该过程继续直到读取所有输入。从视觉上来说,这就是它应该做的事情。
用户输入示例:
要显示的一些示例用户输入
hello world lorem ipsum
这是我到目前为止所拥有的。我一开始尝试过一个foreach循环,但它不起作用
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
my $CGI = new CGI();
sub main {
print $CGI->header();
my @query = $CGI->param('query');
while(@query) {
my $line = shift(@query);
print "$line";
}
#my $count = 0;
#my @res;
#foreach my $line(@query) {
# if($line =~ /[A-Za-z0-9]/) {
# push(@res, $line);
# } elsif ($line =~ /^\s$/) {
# $count++;
# }
#}
print<<HTML;
<html>
<head>
<style>
textarea {
resize: none;
}
</style>
</head>
<form action="rand.cgi" method="post">
<textarea name="query"></textarea>
<input type="submit"/>
</form>
<p>Last submitted:<br><br><pre>@query</pre></p>
</html>
HTML
}
main();
答案 0 :(得分:1)
不需要一堆正则表达式。你想在两个连续的换行符上split
。试试这个:
use strictures;
use Data::Dump;
my $input = "some example user input to show
something with
hello world lorem ipsum";
my @foo = split /\n\n/, $input;
dd @foo;
__END__
(
"some example user input to show\nsomething with",
"hello world lorem ipsum",
)