V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
faywong8888
V2EX  ›  Linux

Vim 这么多人使用,为什么开发 Vim 用的 perl 不再有人提起或谈论,个人觉得 perl 是 linux/unix 环境下的瑞士军刀,有着不小魅力

  •  
  •   faywong8888 · 2016-09-07 10:32:23 +08:00 · 7329 次点击
    这是一个创建于 2785 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2016-09-07 14:46:46 +08:00
    我孤陋寡闻了,我的原意是: Vim 为什么需要依赖 perl ?
    第 2 条附言  ·  2016-09-09 15:49:45 +08:00
    各位大神,我错了,再也不发起编程语言类的话题了。
    36 条回复    2016-09-09 09:15:02 +08:00
    metrue
        1
    metrue  
       2016-09-07 10:42:49 +08:00
    小工具可以使用 Perl 写写,大项目 hold 不住啊。
    ChiangDi
        2
    ChiangDi  
       2016-09-07 10:43:38 +08:00 via Android   ❤️ 7
    瑞士军刀也没有什么人用
    yjd
        3
    yjd  
       2016-09-07 10:47:23 +08:00
    23333 ,普通人都用菜刀。。用不上瑞士军刀
    princelai
        4
    princelai  
       2016-09-07 10:47:51 +08:00
    2007-2008 年我还特地买了 2 本 perl 的书看看,之后就用 python 替代了,反正要求不高足够用了,而且 3 年之间没用 perl ,我已经看不懂了。。。。
    skydiver
        5
    skydiver  
       2016-09-07 10:50:19 +08:00 via Android
    Ruby is the new Perl
    itisthecon
        6
    itisthecon  
       2016-09-07 10:51:02 +08:00
    perl 在小程序, 文本处理方面还是相当犀利的, 比 python 方便太多了
    wupher
        7
    wupher  
       2016-09-07 11:03:01 +08:00
    写完之后除了作者没人能看得懂;过了三个月,作者也看不懂了……
    megatron
        8
    megatron  
       2016-09-07 11:11:40 +08:00
    等 python 再发展一段时间,之后 perl 才有点儿可能“不再有人提起”。
    ericFork
        9
    ericFork  
       2016-09-07 11:13:52 +08:00   ❤️ 3
    vim 是用 perl 写的?
    longdanie
        10
    longdanie  
       2016-09-07 11:13:57 +08:00 via Android
    如果每天都能使用它码 100 行以上,它绝对比 python 好使,否则还是算了吧。
    lcc4376
        11
    lcc4376  
       2016-09-07 11:14:55 +08:00
    哥有 Python 了,,,,.
    araraloren
        12
    araraloren  
       2016-09-07 11:15:01 +08:00
    小脚本之类的用 perl 方便。。
    不过我现在已经完全转向 perl6 了,当然,什么时候能真正的用到生产环境中是个问题。。
    lcc4376
        13
    lcc4376  
       2016-09-07 11:17:40 +08:00
    我以為 Vim 是用 C 寫的
    mgna17
        14
    mgna17  
       2016-09-07 11:19:34 +08:00
    这是要引发第三次世界大战了么 😏
    odirus
        15
    odirus  
       2016-09-07 11:20:34 +08:00
    反正 perl 的那些魔术符号能让 code review 的人吐血
    kikyous
        16
    kikyous  
       2016-09-07 11:22:20 +08:00
    开发 Vim 用的 perl ?
    大哥你在搞笑吗
    airqj
        17
    airqj  
       2016-09-07 11:24:01 +08:00
    第一次听说 vim 是 perl 写的
    是我孤陋寡闻还是真的是事实。。。。。
    asj
        18
    asj  
       2016-09-07 11:24:20 +08:00
    哈哈,想起来很久以前看到有人说 Word 和 Excel 是 VB 写的
    fyibmsd
        19
    fyibmsd  
       2016-09-07 11:26:29 +08:00
    开发 vim 的是 vimscript
    araraloren
        20
    araraloren  
       2016-09-07 11:33:27 +08:00   ❤️ 5
    看了之前的楼层特意去 vim 的仓库看了下

    C 49.4%
    VimL 44.0%
    Groff 1.9%
    Makefile 1.7%
    C++ 0.8%
    PostScript 0.3%
    Other 1.9%
    willm
        21
    willm  
       2016-09-07 11:38:39 +08:00
    Perl 的没落充分验证了一句话

    代码是写出来给人看的,顺便给计算机执行一下
    zhanglintc
        22
    zhanglintc  
       2016-09-07 11:55:36 +08:00
    write only 的美誉不是白瞎的
    hack
        23
    hack  
       2016-09-07 12:17:23 +08:00
    我记得五年前 poc 还是 perl 写,后来大多都转 python 流了
    Clarencep
        24
    Clarencep  
       2016-09-07 12:21:08 +08:00   ❤️ 1
    "代码是写出来给人看的,顺便给计算机执行一下" +1

    程序猿的生命也是有限的, perl 那么多鬼符号太容易忘记了,还是 python 大法好
    josephshen
        25
    josephshen  
       2016-09-07 13:57:55 +08:00 via iPhone   ❤️ 1
    吓得我直接就屏蔽楼主了,张嘴就胡说,是谁告诉你 vim 是 perl 写的?!
    snopy
        26
    snopy  
       2016-09-07 14:43:35 +08:00
    哪位大神来解释下这个 Perl 脚本:
    use strict;
    use Time::Local;
    use Net::FTP;
    use Getopt::Long;
    use FileHandle;
    use POSIX ":sys_wait_h";
    use POSIX qw(strftime);
    my $year = strftime "%Y",localtime(time-24*3600 );
    my $day = strftime "%d",localtime(time-24*3600 );
    my $month = strftime "%m",localtime(time-24*3600 );
    my $hour = strftime "%H",localtime(time() );
    my $min = strftime "%M",localtime(time() );
    my $sec = strftime "%S",localtime(time() );
    my $date = ($year.$month.$day);
    my $cmd;
    my $format_cmd;
    my $scan_start_time;
    my $script_list;
    my $usage =<<"EOS";
    Usage:$0 -t <scan_start_time>
    for: 1.$0 -t "20110419"
    -list <script_list>
    for: 2.$0 -s "DM_P2PQOE_SE_AREAL3_D DM_P2PQOE_SE_AREAL1_D ..."
    EOS

    GetOptions(
    "t:s" => \$scan_start_time,
    "s:s" => \$script_list
    );

    if (defined $scan_start_time)
    {
    $date = $scan_start_time;
    }

    if (defined $script_list) {

    my @script_list_names = split /\s+/, $script_list;
    print "@script_list_names\n";

    my $data_path = '/root/hadoop/pubdata/';
    my $ctl_path = '/root/hadoop/hadoop_cfg/';
    my $log_path = '/root/hadoop/hadoop_log/';

    foreach my $script (@script_list_names) {

    my $file_name = $data_path.$script.'-'.$date;

    my $ctl_name = $ctl_path.$script.'.ctl';
    my $log_name = $log_path.$script.'.log';

    $file_name = `ls $file_name*`;
    $format_cmd="perl -pi -e 's/\\\\N//g' $file_name";
    system($format_cmd);
    $cmd = "sqlldr userid=name/passwd\@ipms direct=true rows=1000000 bindsize=81920000 readsize=81920000 control=$ctl_name data=$file_name log=$log_name";
    print $cmd;
    system($cmd);
    }
    }
    faywong8888
        27
    faywong8888  
    OP
       2016-09-07 14:51:38 +08:00
    @josephshen
    @kikyous
    @araraloren
    多谢你们指点。
    yxzblue
        28
    yxzblue  
       2016-09-07 15:06:22 +08:00
    推广应该更直接点
    sampeng
        29
    sampeng  
       2016-09-07 17:54:10 +08:00
    @wupher 这个是说出心声了。。
    perl 真心是可读性太差了
    zhidian
        30
    zhidian  
       2016-09-07 23:31:47 +08:00
    Vim 可以录制键盘宏…… Perl 可以吗? Perl 可以处理文本, Vim 录制的键盘宏也可以处理文本,而且也可以保存起来随时运行,如此观之,处理文本,我用 Vim !

    不过所有的正则表达式不都差不多么?处理起文本来也都是差不多的。
    alcarl
        31
    alcarl  
       2016-09-07 23:53:23 +08:00
    @snopy 这好像是把一个日期的所有指定名字前缀的文件导入到 oracle 里的脚本。。。。。。。
    alcarl
        32
    alcarl  
       2016-09-07 23:57:12 +08:00
    学一点 perl 在文本数据处理较多的场合和 linux 系统运维的场合还是很能提高效率的哈。
    arakashic
        33
    arakashic  
       2016-09-08 05:39:27 +08:00
    vim 不依赖 perl 啊,`--enable-perlinterp`不是默认选项
    jiangjun
        34
    jiangjun  
       2016-09-08 14:20:56 +08:00
    Perl 只是用来写插件。 vim 支持的语言多了去了。现在用 Python 写 vim 插件是最方便的。
    bwangel
        35
    bwangel  
       2016-09-08 14:23:46 +08:00
    这是 vim-common 的依赖,只有一个 libc 。
    ```
    ➜ /home/yundongx/Bundle/request $ apt-cache depends vim-common
    vim-common
    Depends: libc6
    Breaks: vim-gui-common
    |Recommends: vim
    vim-athena
    vim-gnome
    vim-gtk
    vim-nox
    |Recommends: vim-gnome
    |Recommends: vim-gtk
    |Recommends: vim-athena
    |Recommends: vim-nox
    Recommends: vim-tiny
    Replaces: vim-gui-common
    ```

    这是 vim-gnome 的依赖,因为编译的时候开启了`--enable-perlinterp`,所以会依赖一个 libperl5.22 ,它和 libpython2.7 的作用基本相同!

    ```
    ➜ /home/yundongx/Bundle/request $ apt-cache depends vim-gnome
    vim-gnome
    Depends: vim-gui-common
    Depends: vim-common
    Depends: vim-runtime
    Depends: libacl1
    Depends: libbonoboui2-0
    Depends: libc6
    Depends: libgdk-pixbuf2.0-0
    Depends: libglib2.0-0
    Depends: libgnome-2-0
    Depends: libgnomeui-0
    Depends: libgpm2
    Depends: libgtk2.0-0
    Depends: libice6
    Depends: liblua5.2-0
    Depends: libpango-1.0-0
    Depends: libperl5.22
    Depends: libpython2.7
    Depends: libruby2.2
    Depends: libselinux1
    Depends: libsm6
    Depends: libtcl8.6
    Depends: libtinfo5
    Depends: libx11-6
    Depends: libxt6
    Suggests: cscope
    Suggests: vim-doc
    Suggests: fonts-dejavu
    Suggests: gnome-icon-theme
    ```
    Mithrandir
        36
    Mithrandir  
       2016-09-09 09:15:02 +08:00
    perl 太老了,历史包袱深重,并且新版本开发不力
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1435 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:26 · PVG 01:26 · LAX 10:26 · JFK 13:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.