# Pure Perl STDF Parser **Repository Path**: cyler123/pure-perl-stdf-parser ## Basic Information - **Project Name**: Pure Perl STDF Parser - **Description**: 并不是非常高端脚本,只是我为了解决“公司又要处理stdf 文件,又不肯花钱买YMS软件”这个问题而搞出来的小东西。 考虑到还有很多人在苦恼手头没有工具,那么,就给大家分享吧 - **Primary Language**: Perl - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 2 - **Created**: 2022-08-13 - **Last Updated**: 2024-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Pure Perl STDF Parser #### 介绍 并不是非常高端脚本,只是我为了解决“公司又要处理stdf 文件,又不肯花钱买YMS软件”这个问题而搞出来的小东西。 考虑到还有很多人在苦恼手头没有工具,那么,就给大家分享吧 #### 软件架构 - STDF_pp.pm / STDF_inline_C.pm基本上就是一回事,但是STDF_inline_C使用了C语言编写了PTR REC的处理函数 - STDF_pp.pm / STDF_inline_C.pm都是用STDF_Array.pm来处理一些数组相关的事情。但结果上看,效果不好,但暂时也不会变更了 - parse_stdf.pl使用STDF_inline_C或者STDF_pp来解析STDF文件的每一个REC,然后理解REC之间的逻辑,重新组合后,输出成为人可阅读的文本文件(拖进excel就可以使用) - group_parse_stdf.pl只是处理一大堆文件时的辅助工具,省去了你一个个文件敲命令的尴尬。当然,你也可以`xargs -i ...`的嘛 #### 安装教程 1. 你首先需要安装Strawberry Perl,版本清选择5.28; 2. 需要安装必须的包,应该保证以下package: - experimentals - File::Spec - Win32::Process - Data::Dumper - File::Copy - Carp - IO::Handle - List::MoreUtils - Moo - Time::localtime - Scalar::Util - PerlIO::via::gzip - POSIX - Inline::C 3. 将STDF_PP下的文件全部解压缩到某个你喜欢的目录,建议目录中不要有空格,也不建议包含中文。因为我比较懒,我没有进行任何CJK相关的测试。 4. 将STDF_pp的文件所在的目录,加入到环境变量PERL5LIB中 5. 将STDF_Parser下的parse_stdf.pl文件保存至你喜欢的目录 6. 新建一个环境变量"STDF_PARSER_SCRIPT_PATH",指向parse_stdf.pl的完整地址 7. 将 STDF_Group_Parser 下的group_parse_stdf.pl保存至你喜欢的目录 #### 使用说明 1. `perl parse_stdf.pl [input stdf path] [output file path]` 2. `perl group_parse_stdf.pl [stdf data folder01] [stdf data folder02] ...` 3. group_parse_stdf.pl使用了Win32::Process模块,来实现每个任务分配一个CPU内核。所以只能适用于windows。但其它组件是可以在Linux下稳定运行的。 4. 部分linux发行版自带的perl为5.30/5.32版本。该版本中POSIX已经默认包含,不需要安装。 5. 部分linux发行版可能无法通过CPAN安装某些package,而是要通过apt-get来安装。可以先通过apt-cache进行搜索,然后自行安装。 6. Windows下的strawberry perl自带了与perl兼容的C语言编译器,在使用Inline::C模块的时候不会遇到问题。但某些linux发行版可能需要先自行安装C编译器,比如gcc。 7. C编译只要支持C99,就应该不会有问题。 8. 如果实在有某种原因,导致C编译器不可以用,或者Inline::C无法正常工作,可以切换为STDF_pp(pure perl)模块。方法为: - 打开parse_stdf.pl - 将`use STDF_inline_C;`修改为`use STDF_pp;` - 保存关闭 9. 但因为我主要以STDF_inline_C进行作业,所以可能在使用STDF_pp时,会有bug。而我无法自行发现,你如果发现了,记得通知我。 #### 参与贡献 1. 我自己, cyler123@hotmail.com #### 特殊后记 虽然不是什么值钱的玩意,但因为是我的东西,所以任何与一个曾就职于泰瑞达的--我不说是谁但某个贱人/傻逼/畜生/人类的渣滓自己心里明白--相关的人,包括其下属,直系亲属和旁系亲属,都不可以使用这些脚本。