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

Perl背包客日记(1):为源码文件所有函数添加 access log

发布时间:2020-12-15 21:00:48 所属栏目:大数据 来源:网络整理
导读:Perl背包客日记(1):为源码文件所有函数添加 access log 作者:苏 原文链接:blog.csdn.net/prevention ~ 如果你有一系列 C 源文件,想为每个函数添加一句 access log,来方便的知道函数执行流程的话,这篇文章会告诉你一个特定范例下的实践方式。 下面是

Perl背包客日记(1):为源码文件所有函数添加 access log

  • 作者:苏
  • 原文链接:blog.csdn.net/prevention

~

如果你有一系列 C 源文件,想为每个函数添加一句 access log,来方便的知道函数执行流程的话,这篇文章会告诉你一个特定范例下的实践方式。

下面是本文中的 C 源文件格式范例:

void
function1(int a,int b)
{
    ... 
}

static int 
_function2()
{
    ... 
}

static char*
function3(char b,int x,double z)
{
    ... 
}

typedef struct{
    int x;
    int y;
    char z;
} some_type;

(本文来自:blog.csdn.net/prevention)简单地说,就是类似于 Nginx 等优秀 C 开源项目的源文件书写风格。加上一句 access log 后变为:

int b)
{//printf("zc: function1n")
    ... 
}

static int 
_function2()
{//printf("zc: _function2n")
    ... 
}

static char*
function3(char b,double z)
{//printf("zc: function3n")
    ... 
}

typedef struct{
    int x;
    int y;
    char z;
} some_type;

如何实现呢?肯定要用到:

  • File IO;
  • regex;
@files = glob "*.c";
foreach $arg (@files) {
    open SRCFILE,"<:encoding(UTF-8)",$arg;
    open DSTFILE,0)">">:encoding(UTF-8)",0)">"../" . $arg;
    $ready = !!0;
    select DSTFILE;
    foreach (<SRCFILE>) {
        if (!$ready && /A(.+)(.*)n/s) {
            $funcname = $1;# . "n";
            $ready = !!1;
            print $_; 
        } elsif (/A{n/s) {
            print "{//printf("zc: " . $funcname . "n")" . "n"; # write this string into the dst file
            $ready = !!0;
        } else {
            print $_; 
        }   
    }   
    $| = 1;
    select STDOUT;
    close DSTFILE;
    close SRCFILE;
}

上面的知识点有:

  1. open 输入和输出(《Perl语言入门》P102)
  2. 改变默认的文件输出句柄(《Perl语言入门》P111)
  3. foreach 循环控制(《Perl语言入门》P187)
  4. glob
  5. 数组
  6. 布尔值小技巧
  7. 正则表达式
  8. 字符串连接

原文链接:blog.csdn.net/prevention

~

(编辑:李大同)

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

    推荐文章
      热点阅读