码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Perl动态建立ZIP压缩文件


    Perl可以通过Archive::Zip模块,动态建立和阅读ZIP压缩文件,而不必依赖外来工具和实用工具。
    首先安装该模块,比较耗时间,
    cpan Archive::Zip

    1,建立ZIP压缩文件

    脚本如下:
    #!/usr/bin/perl

    use strict;
    use warnings;
    use Archive::Zip qw( :ERROR_CODES :CONSTANTS );

    my $zip = Archive::Zip->new();

    # establish zip file.

    my @files = (
        '/home/sysadmin/aaa/dns.pl',
        '/home/sysadmin/aaa/md5.pl',
        '/home/sysadmin/aaa/apache.pl'
    );

    foreach my $file (@files) {
        $zip->addFile($file);
    }

    unless ( $zip->writeToFileNamed('/opt/zip.zip') == AZ_OK ) {
        print "Error in archive creation!\n";
    }
    else {
        print "Archive created successfully!\n";
    }




    2,查看ZIP压缩文件内容

    脚本如下:
    #!/usr/bin/perl

    use strict;
    use warnings;

    use Archive::Zip qw( :ERROR_CODES :CONSTANTS );

    my $zip = Archive::Zip->new();

    # read zip file.

    my $status = $zip->read("/opt/zip.zip");
    if ( $status != AZ_OK ) {
        die('Error in file!');
    }
    else {
        foreach my $member ( $zip->members() ) {
            print $member->fileName(), ", ", $member->uncompressedSize(), ":",
              $member->compressedSize(), "\n";
        }
    }




    3,在现有ZIP压缩文件中插入文件

    脚本如下:
    # read zip file.

    my $status = $zip->read("/opt/zip.zip");
    if ( $status != AZ_OK ) {
        die('Error in file!');
    }
    else {
        my @files = (
        '/home/sysadmin/chentao/apache.pl'
        );
        foreach my $file (@files) {
            $zip->addFile($file);
        }
        if ( $zip->overwrite() != AZ_OK ) {
            print "Error in archive creation!";
        }
        else {
            print "Archive created successfully!";
        }
    }



    在一个现有压缩文件中插入一个文件的过程与建立一个新压缩文件非常相似,成功添加文件后,就可以用overwrite()方法用更新后的压缩文件覆盖原始的压缩文件。

  • 相关阅读:
    企业电子招投标采购系统——功能模块&功能描述+数字化采购管理 采购招投标
    [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(五)文件上传相关面试题
    std::function
    jmeter如何测试websocket接口?
    Linux环境下gdb调试方法与演示
    离散数学·图的矩阵表示、平面图
    【图像去雾】基于matlab颜色衰减先验图像去雾【含Matlab源码 2036期】
    上云网关EasyNTS遇到IP冲突时,如何正确更改IP地址?
    uniCloud开发公众号:三、生成带参数二维码
    golang select 机制
  • 原文地址:https://blog.csdn.net/vempire/article/details/127980897
  • 最新文章
  • 【FHE】我们如何实现同态加密推理(八):SiLU 的密文化——两条路径,和一个 8 字节的开关
    SQLcl 中 c/old/new 替换变量为何失效?先定位再替换
    不让模型写作文,直接从它脑子里读答案:Jev 决策在 .NET 的两条路线
    Halo插件:支持GitHub的图床附件策略
    电视投屏界的“一股清流”!SimpleTVCast 6.0.0-beta 抢先体验:无需TV端App,界面大换血!✨
    华三VXLAN集中式网关实战指南:Spine多活网关 + 双活接入(M-LAG)
    软件更好写之后口碑会更重要
    大 O、大 Omega、大 Theta 的区别,O(n) 复杂度是什么意思
    Java标签跳转:一个鲜为人知但却很实用的小技巧
    多智能体系统论文速读
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号