perl: 读取标准输入,找出输入中拥有最大的数字的一行

perl: 读取标准输入,找出输入中拥有最大的数字的一行,第1张

要实现你的要求,需要把输入的数据按行存入数组,然后把句子按空格切分成单词,把单词中的数字用正则表达式匹配出来与最大值比较,最后输出最大值所在行

用sort函数,因为有数字又有字符,所以比较不方便,不如自定义比较

完整的Perl程序如下(每行都加了注释)

@arr=();#定义一个空数组

while(defined($line = <STDIN>)){#从标准输入设备读取一行赋给$line,直到最后一行

push(@arr,$line);#把读取的一行压入数组

}

$max=0;#定义最大值变量,并赋初值0

$maxi=0;#定义最大值所在行变量,并赋初值0

for($i=0;$i<@arr;$i=$i+1){ #for_i循环遍历每行数据

@num=split(/ +/,$arr[$i]);#把每行数据按空格切分成单词

for($j=0;$j<@num;$j=$j+1){#for_j循环遍历每行数据的每个单词

$s=$num[$j];#把切分出来的单词赋给临时变量$s

if($s=~ m/[0-9]+/){ #用正则表达式匹配数字,如果有赋给$s

if($max<$s){ #如果数字大于最大值

$max=$s; #把最大值赋给$max

$maxi=$i;#把最大值所在行号赋给$maxi

}

}

}

}

print @arr[$maxi];#打印最大值所在行的数据

源代码

#上面的写法可以

@array=(150);

print @array[3050];

#或者也可以这样:

@array=(150);

for $i (3050) {print $array[$i];}

size就是数组的长度;count(), sizeof()这两个函数都行。

PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。

PHP 独特的语法混合了C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。

perl命令行参数怎么捕获? perl 获取命令行参数方法,以在windows *** 作系统为例,当我们在命令行中调用PERL程序的时候,我们往往会跟随一些参数,比如输入文件名,和输出文件名之类的信息。这些信息PERL会将它们存储在@ARGV数组中(和C语言一样)。比如在cmd中输入如下命令:

pppl -opcamfile opcamfileini -rcfile rcfiletxt -swapfile swapfiletmp -outfile outfiletxt

PERL会建立一个数组@ARGV=qw/-opcamfile opcamfileini -rcfile rcfiletxt -swapfile swapfiletmp -outfile outfiletxt/;然后我们想把这些信息做何用出就对应的处理数组,从数组中分离我们想要的数据就可以了。如下面的代码所示。shift的默认参数是@ARGV。

while ($#ARGV > -1) {

if ($ARGV[0] =~ /-opcamfile/i){

if ($ARGV[1] !~ /-/) {

$opcamfile = $ARGV[1];

shift;

}

shift;

} elsif ($ARGV[0] =~ /-rcfile/i) {

if ($ARGV[1] !~ /-/) {

$rcfile = $ARGV[1];

shift;

}

shift;

} elsif ($ARGV[0] =~ /-swapfile/i) {

if ($ARGV[1] !~ /-/) {

$swapfile = $AR GV[1];

shift;

}

shift;

} elsif ($ARGV[0] =~ /-outfile/i) {

if ($ARGV[1] !~ /-/) {

$outfile = $ARGV[1];

$outfile =~ s/_sim//g;

shift;

}

shift;

} else {

die 'Unrecognized argument, Exiting';

}

}

使用Perl中的ref方法,可以判断一个引用是指向hash还是array。

if (ref($user) eq 'HASH') {

# $user 指向的是HASH

}

elsif (ref($user) eq 'ARRAY') {

# $user 指向的是数组

}

else {

}

以上就是关于perl: 读取标准输入,找出输入中拥有最大的数字的一行全部的内容,包括:perl: 读取标准输入,找出输入中拥有最大的数字的一行、perl如何打印数组中的一段、php获取数组里面的size等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/9808615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存