V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
faywong8888
V2EX  ›  Linux

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

  •  
  •   faywong8888 · Sep 7, 2016 · 8438 views
    This topic created in 3530 days ago, the information mentioned may be changed or developed.
    Supplement 1  ·  Sep 7, 2016
    我孤陋寡闻了,我的原意是: Vim 为什么需要依赖 perl ?
    Supplement 2  ·  Sep 9, 2016
    各位大神,我错了,再也不发起编程语言类的话题了。
    36 replies    2016-09-09 09:15:02 +08:00
    metrue
        1
    metrue  
       Sep 7, 2016
    小工具可以使用 Perl 写写,大项目 hold 不住啊。
    ChiangDi
        2
    ChiangDi  
       Sep 7, 2016 via Android   ❤️ 7
    瑞士军刀也没有什么人用
    yjd
        3
    yjd  
       Sep 7, 2016
    23333 ,普通人都用菜刀。。用不上瑞士军刀
    princelai
        4
    princelai  
       Sep 7, 2016
    2007-2008 年我还特地买了 2 本 perl 的书看看,之后就用 python 替代了,反正要求不高足够用了,而且 3 年之间没用 perl ,我已经看不懂了。。。。
    skydiver
        5
    skydiver  
       Sep 7, 2016 via Android
    Ruby is the new Perl
    itisthecon
        6
    itisthecon  
       Sep 7, 2016
    perl 在小程序, 文本处理方面还是相当犀利的, 比 python 方便太多了
    wupher
        7
    wupher  
       Sep 7, 2016
    写完之后除了作者没人能看得懂;过了三个月,作者也看不懂了……
    megatron
        8
    megatron  
       Sep 7, 2016
    等 python 再发展一段时间,之后 perl 才有点儿可能“不再有人提起”。
    ericFork
        9
    ericFork  
       Sep 7, 2016   ❤️ 3
    vim 是用 perl 写的?
    longdanie
        10
    longdanie  
       Sep 7, 2016 via Android
    如果每天都能使用它码 100 行以上,它绝对比 python 好使,否则还是算了吧。
    lcc4376
        11
    lcc4376  
       Sep 7, 2016
    哥有 Python 了,,,,.
    araraloren
        12
    araraloren  
       Sep 7, 2016
    小脚本之类的用 perl 方便。。
    不过我现在已经完全转向 perl6 了,当然,什么时候能真正的用到生产环境中是个问题。。
    lcc4376
        13
    lcc4376  
       Sep 7, 2016
    我以為 Vim 是用 C 寫的
    mgna17
        14
    mgna17  
       Sep 7, 2016
    这是要引发第三次世界大战了么 😏
    odirus
        15
    odirus  
       Sep 7, 2016
    反正 perl 的那些魔术符号能让 code review 的人吐血
    kikyous
        16
    kikyous  
       Sep 7, 2016
    开发 Vim 用的 perl ?
    大哥你在搞笑吗
    airqj
        17
    airqj  
       Sep 7, 2016
    第一次听说 vim 是 perl 写的
    是我孤陋寡闻还是真的是事实。。。。。
    asj
        18
    asj  
       Sep 7, 2016
    哈哈,想起来很久以前看到有人说 Word 和 Excel 是 VB 写的
    fyibmsd
        19
    fyibmsd  
       Sep 7, 2016
    开发 vim 的是 vimscript
    araraloren
        20
    araraloren  
       Sep 7, 2016   ❤️ 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  
       Sep 7, 2016
    Perl 的没落充分验证了一句话

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

    程序猿的生命也是有限的, perl 那么多鬼符号太容易忘记了,还是 python 大法好
    josephshen
        25
    josephshen  
       Sep 7, 2016 via iPhone   ❤️ 1
    吓得我直接就屏蔽楼主了,张嘴就胡说,是谁告诉你 vim 是 perl 写的?!
    snopy
        26
    snopy  
       Sep 7, 2016
    哪位大神来解释下这个 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
       Sep 7, 2016
    @josephshen
    @kikyous
    @araraloren
    多谢你们指点。
    yxzblue
        28
    yxzblue  
       Sep 7, 2016
    推广应该更直接点
    sampeng
        29
    sampeng  
       Sep 7, 2016
    @wupher 这个是说出心声了。。
    perl 真心是可读性太差了
    zhidian
        30
    zhidian  
       Sep 7, 2016
    Vim 可以录制键盘宏…… Perl 可以吗? Perl 可以处理文本, Vim 录制的键盘宏也可以处理文本,而且也可以保存起来随时运行,如此观之,处理文本,我用 Vim !

    不过所有的正则表达式不都差不多么?处理起文本来也都是差不多的。
    alcarl
        31
    alcarl  
       Sep 7, 2016
    @snopy 这好像是把一个日期的所有指定名字前缀的文件导入到 oracle 里的脚本。。。。。。。
    alcarl
        32
    alcarl  
       Sep 7, 2016
    学一点 perl 在文本数据处理较多的场合和 linux 系统运维的场合还是很能提高效率的哈。
    arakashic
        33
    arakashic  
       Sep 8, 2016
    vim 不依赖 perl 啊,`--enable-perlinterp`不是默认选项
    jiangjun
        34
    jiangjun  
       Sep 8, 2016
    Perl 只是用来写插件。 vim 支持的语言多了去了。现在用 Python 写 vim 插件是最方便的。
    bwangel
        35
    bwangel  
       Sep 8, 2016
    这是 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  
       Sep 9, 2016
    perl 太老了,历史包袱深重,并且新版本开发不力
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5173 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 130ms · UTC 09:50 · PVG 17:50 · LAX 02:50 · JFK 05:50
    ♥ Do have faith in what you're doing.