Perl语言简介

news/2024/12/12 21:59:21/

      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;

  }


http://www.ppmy.cn/news/203571.html

相关文章

oracle 里面pragma,PRAGMA oracle

PRAGMA是一个编译指示(或命令)。 ===== 编译指示在编译时被处理,它们不在运行时执行 ===== 编译指示是对编译程序发出的特殊指令。 ===== 它也称为伪指令(pseudoinstruction),不会改变程序的含义。 ===== 它只是向编译程序传递信息 ,实际上它是非常类似于嵌在 SQL 语句的注释…

Oracle LPAD, RPAD

Oracle实在是很高深啊,怪自己平时太懒,今天遇到一个“算法”吧,我们暂时这样叫它,遇到了一个需要通过Oracle系统函数来截取字符串,用到了下面的函数,但是不好意思,呵呵,今天刚知道&a…

Oracle RAC命令

自己整理笔记使用 HAIP:私有网卡用作两个节点之间的通信,他的健壮性很重要,之前都是通过bonding这种技术来做私有网卡的冗余,Oracle 11.2.0.2之后有了HAIP这种技术,Oracle提供私有网卡的冗余 [gridrac01 ~]$ ip a 3: …

RP1

什么是RP1? RP1是OBSAI(Open Base Station Architecture Initiative)引入的概念。 https://en.wikipedia.org/wiki/Open_Base_Station_Architecture_Initiative OBSAI架构中,BTS的结构分为四块: Radio Frequency (R…

什么是Perl语言?

perl Perl 最初的设计者为 拉里沃尔(Larry Wall),它于1987年12月18日发表。Perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。 Perl 一般被称为“实用报表提取语言”(PracticalExtraction andReportLanguage&a…

Oracle Privileges and Roles

Oracle Privileges Oracle包括两大类权限,一种是系统权限,另外一种是对象权限。 System Privileges Create sessionCreate tableCreate viewCreate procedureSysdbaSysoper Object Privileges Privileges can be assigned to any of the following types…

【RAC】oracle RAC常用命令

oracle RAC常用命令 ●日志路径:/u01/app/oracle/diag/rdbms/orcl/orcl1/trace/alert_orcl1.log 注:可以使用show parameter dump查看 ●CRS日志:/u01/app/11.2.0/grid/log/ xqrac1/crsd #黄色底的是实例 ●查看是不是RAC&#xf…

pragma指令简介

在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.下面介绍了一下该指令的一些常用参数,希望对大家有所帮助! 一. message 参数。 message 它能够在编译信息输出窗 口中输出相应的信息,这对于源代码信息的控制…