如何使用perl递归找出菜单路径-创新互联

本篇内容介绍了“如何使用perl递归找出菜单路径”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联建站服务项目包括淳安网站建设、淳安网站制作、淳安网页制作以及淳安网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,淳安网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到淳安省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

闲来无事,写了一个脚本,关于根据关系,找出菜单层次路径。
例如:
第一列:子菜单的序号
第二列:菜单名称
第三列:上级菜单序号

造数据:
cat >menu.txt
settle_report_timeout|超时报表|settle_report
settle_report|二级报表|report
report|主报表|main
main|首页
settle_report_fail|错误报表|settle_report

运行脚本输出:
首页-->主报表-->二级报表-->超时报表 
首页-->主报表-->二级报表-->错误报表 


这里只有两个终极菜单,其他未完成的菜单不输出。




#!/usr/bin/perl


my %list=();


my %parent=();


open(MYTEXT,"menu.txt")||die "can't open myfile:$!";
while(defined($line=))
{
chomp($line);
my @tmp=split(/\|/,$line);
$list{$tmp[0]}=\@tmp;
$parent{$tmp[2]}=1;
}


##从key=00开始找,开始输出父菜单--》然后找列表数组3是否存在00,


foreach $key (keys %list)
{
##print "$key => $list{$key}[1]\n";
my $menu_name='';
my $all_menu='';
if(exists $parent{$key} )
{
##print " $list{$key}[1] 该菜单是不是最终菜单。\n";
}
else
{
##print " $list{$key}[1] 该菜单是子菜单。\n";
my $flag=0;
my $fu_key = $list{$key}[2];
$all_menu.=$list{$key}[1];


while( $flag==0 )
{
if(exists $parent{$fu_key} && $fu_key ne '')
{
$all_menu="$list{$fu_key}[1]-->$all_menu";
##print $all_menu,"\n";
}else
{
$flag=1;
}
$fu_key=$list{$fu_key}[2];
}
print "$all_menu \n";
}
}

“如何使用perl递归找出菜单路径”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联-成都网站建设公司网站,小编将为大家输出更多高质量的实用文章!


网站题目:如何使用perl递归找出菜单路径-创新互联
网站路径:http://pwwzsj.com/article/dcegpp.html