Tag: Perl

Shell Script 使用 #!/usr/bin/env

在 Shell Script 的第一行称为 shebang, shebang 由 “#!” 开头, 并在后面加上解译器的绝对路径, 即类似: #!/bin/sh #!/bin/bash #!/usr/bin/perl #!/usr/bin/python 如果 Shell Script 不同的平台执行, 指定的解译器可能位置有所不同, 如果想增加 Shell Script 在不同 Unix Like 环璄的可流动性, 可以使用 /usr/bin/env …

vim 把 Tab 转换为 4 Space

以前习惯用 Tab 来做缩排,在用 Sublime Text 没什么关系,Tab 跟 4 个空格的长度一致,但近年经常用 vim 直接在 CLI 写程式,当程式需要多层判断式或循环时,很多时在终端机会看得很辛苦,因为在 vim 显示 Tab 会比 4 个空格的距离还长。 所以还是用 4 个空格取代 Tab 较方便,以下是在 vim 及 Sublime Text 按下 …

防止 Shell Script 重复执行

Shell Script 对日常系统维护很实用,对于多用户系统,Shell Script 经常面对一个问题是重复执行,即一个 Shell Script 正在执行时,避免另一个使用者执行。另一个情况是,当 Shell Script 变得复杂及庞大时,放到 crontab 定时执行时 (例如每分钟执行一次),Shell Script 还未完成上次的执行,就重复自动执行一次。 要防止 Shell Script 重复执行,一般上会用 lock file 及 PID 的方法,不论是 lock file 还是 PID,除了用 …

闰年计算公式

一般讲法是每四年就有一年是闰年, 但这个讲法只符合大部份的闰年, 有些年份还是不会每四年一闰的。 在求学时期学写程式时, 就写过这样的程式, 很简单检查该年是否闰年, 而闰年的规则有 2 条: 1. 年份可以被 400 整除, 是闰年. 2. 年份不能被 100 整除, 但可以被 4 整除, 是闰年. 现在很多程式语言也不用测试上面的规则, 因为程式语言的开发者已经写好, 例如 PHP 的 date() 函式, …

删除 Postfix Queue 内邮件

Postfix 跟其他 MTA 一样, 会将不能成功发送的邮件放到 Queue 里面, 在特定的时间内重新尝试发送, 超过指定的时间会自动删除。但如果发送大量邮件, 例如有用户发送大量垃圾电邮, 会在 Queue 内积压大量的邮件, 这时可以手动删除。 以下删除 Postfix Queue 内邮件的方法: 列出 Postfix Queue 内所有邮件: # mailq 删除 Postfix Queue 内所有邮件: # …

Perl 印出颜色文字

在写 Perl Script 时通常我会将错误讯息用红色显示, Warning 用黄色, 执行正确用录色, 看似没什么用, 但其实很方便, 不用细心看输出内容就可以知道有没有错误。在另一篇文章 Shell Script 输出颜色文字 介绍了在 Shell Script 输出颜色文字的方法, 但这个方法并不好记, 因为颜色码是数字, 通常用过就会忘记。 Perl 要印出颜色文字同样可以用上面提及的颜色码, 但另一个更方便的做法是用内建的 ANSIColor 模组, 用 ANSIColor 的好处是不用记颜色码, 直接用颜色的英文名称即可, …

Perl 读入管线 (pipe) 输入

Linux 下的管线 (pipe) 很实用,可以将多个指令一同执行,如果在 Perl Script 想读取 pipe 输入,可以用 符号,这样就可以将 Perl Script 写到像 Linux 下的指令那样运作,写法也十分简单,就这样: testing.pl 以上程式码会读入 pipe 输入,然后逐行印出,在指令模式这样做: cat /etc/fstab | testing.pl 上面的指令将 cat /etc/fstab 的输出导入到 testing.pl。