加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl语言简介

发布时间:2020-12-16 00:38:02 所属栏目:大数据 来源:网络整理
导读:????? Perl是一种通用编程语言。凡是其他编程语言能够使用的地方,都有它的用武之地。在各行各业中,它已经被用于你能够想像到的各种各样的任务的处理。Perl的用途之所以如此广泛,原因是Perl被称为是一种“胶水语言”。所谓胶水语言,也就是说它是可以用来

????? Perl是一种通用编程语言。凡是其他编程语言能够使用的地方,都有它的用武之地。在各行各业中,它已经被用于你能够想像到的各种各样的任务的处理。Perl的用途之所以如此广泛,原因是Perl被称为是一种“胶水语言”。所谓胶水语言,也就是说它是可以用来将许多元素连接在一起的语言。Perl真正擅长的是将这些程序连接在一起.

?

????? 由于Perl是一种“胶水语言”,能够将许多元素连接在一起,因此它具有极强的适应性。它至少能够在二十几种操作系统下运行,甚至能够在更多的操作系统下运行。Perl的编程样式非常灵活,因此可以用许多不同的方法来做同一件事情。你编写的Perl程序看上去可能与我的程序毫无共同之处,但是如果它们运行起来,却没有任何问题。

?

?

Mtk平台make2.pl文件分析

?

1 主要变量

?

????? $myCmd? 这个变量的作用是代表项目文件夹下的make命令的

????? $custom?? 代表mtk给客户的版本名称,平台会根据这个名称再加上$project这个变量代表的内容去项目环境下的make文件夹去找相应的make文件.

????? $project?? 代表项目需要编译的主要内容,目前主要有gsm和gprs这两项.

????? @actions = qw(new update remake clean resgen codegen emiclean emigen sysgen ckscatter viewlog c,r c,u gencustominfo);???? ?????? 目前支持的命令数组

????? ARGV 代表命令行下的参数的数组,相当于c语言中带参数的main函数.需要注意的是$#ARGV代表参数即这个数组成员的个数,默认如果没有的话$#ARGV = -1

????? $makeFolder 编译的文件夹

????? $toolsFolder? 平台工具的文件夹

?

?

2 关键语句

?

if ($ENV{"OS"} eq "Windows_NT")

{

??????? $delCmd = "del /Q";

??????? $dirDelim = "//";

??????? $makeFolder = "make//";

??????? $toolsFolder = "tools//";

??????? $MTKtoolsFolder = "mtk_tools//";

??????? $makeCmd = "tools//make.exe";

} else

{

??????? $delCmd = "rm";

??????? $dirDelim = "/";

??????? $makeFolder = "make/";

??????? $toolsFolder = "tools/";

??????? $MTKtoolsFolder = "mtk_tools/";

??????? $makeCmd = "tools/make";

}

?

????? 这些语句是根据不同的系统设置的不同的编译目录.

?

而make2.pl中最关键的语句是

????? system("echo ${makeCmd} -f ${makeFolder}${myMF} -r -R CUSTOMER=$custom PROJECT=$project $action");

?

这条语句的作用解析成dos环境的命令就是

?

????? tools/make.exe -f make/gsm2.mak -r -R CUSTOMER=CCDHBJ26_06B PROJECT=GPRS remake

?

其实就是用make工具编译make文件夹下的gsm2.mak这个makefile文件 其中CUSTOMER 和PROJECT 是在gsm2.mak中的用到的宏定义,remake 是目标模块,也在gsm2.mak中有相应的定义:附 make命令简单介绍

?

Make命令本身可带有四种参数:标志、宏定义、描述文件名和目标文件名。其标准形式为:

?

  Make [flags] [macro definitions] [targets]

?

?

同时注意perl的system命令,当成功的时候返回0,不成功的时候返回的是非零值而system("echo ${makeCmd} -f ${makeFolder}${myMF} -r -R CUSTOMER=$custom PROJECT=$project $action");的调用 在mtk平台绝大多数情况下是在满足下面的判断的情况下调用的

?

if (($action eq "remake") || ($action eq "update") ||($action eq "new")|| ($action eq "bm_new"))

{

????? system("echo BM_NEW=TRUE ${action}");

?

??????if ($action eq "bm_new")

????? {

??????????? system("echo BM_NEW=TRUE >> ${makeFolder}~buildinfo.tmp");

??????????? $result = system("${makeCmd} -f${makeFolder}${myMF} -k -r -R CUSTOMER=$custom PROJECT=$project new");

?????? }

????? else

????? {

???????????? $result = system("${makeCmd} -f ${makeFolder}${myMF} -r -R CUSTOMER=$custom PROJECT=$project $action");

????? }

?

??? &writeINI;

??????if ((($result == 0)) && ($newMoDIS == 1) && (-d "MoDIS"))

????? {

??????????? &chdirMoDIS;

??????????? &genMoDIS;

??????????? &codegenMoDIS;

??????????? &cleanMoDIS;

??????????? &remakeMoDIS;

??????????? &chdirToMcu;

????? }

????? exit 0;

? }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读