Perl 学习手札之十三:building function

string.pl

#!/usr/bin/perl
#
use strict;
use warnings;

main(@ARGV);

sub main
{
    my $string = "this is a string\n";
    print $string;
    
    chomp $string;
    message("[$string]");
    
    chop $string;
    message("[$string]");
    
    my $s2 = uc $string;
    message($s2);
    
    $s2 = lc $string;
    message($s2);
    
    $s2 = substr($string,5,2);
    message($s2);
    
    $s2 = substr($string,5,4);
    message($s2);
    
    $s2 = index ($string,'s');
    message($s2);

$s2 = rindex($string,'s');
    message($s2);

$s2 = substr($string,rindex($string,'s'));
    message($s2);
}

sub message
{
    my $m = shift or return;
    print("$m\n");
}

sub error
{
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
}

可以参考perldoc perlfunc 来查看所有的building function 的情况。

以上罗列了几个比较常用的。

number.pl

#!/usr/bin/perl
#
use strict;
use warnings;

main(@ARGV);

sub main
{
    my $number = 123.456;
    my $n2 = int($number);
    message($n2);
    
    $number = "a5";
    $n2 = hex($number);
    message($n2);
    
    $number = "75";
    $n2 = oct($number);
    message($n2);    
    
    $number = rand();
    message($number);

$number = rand(100);
    message($number);

$number = int(rand(100));
    message($number); 
    
    srand($$. time);
    $number = int(rand(100));
    message($number);     
}

sub message
{
    my $m = shift or return;
    print("$m\n");
}

sub error
{
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
}

关于数字的building in 函数不是太多

arrays.pl

#!/usr/bin/perl
#
use strict;
use warnings;

main(@ARGV);

sub main
{
    my @list = qw(jan feb mar apr may june july aug sep oct nov dec);
    push(@list,'foo');    #将元素‘foo'加入数组的最后一行
    message(join(':',@list));
    message(join(':',reverse @list));#将数组求逆序
    
    my $string = pop @list;#输出数组的最后一个元素
    message($string);
    
    $string = shift @list;#输出数组的第一个元素给string
    message($string);

unshift (@list,$string);#将string加入数组,变成数组的第一个元素
    message($string);

}

sub message
{
    my $m = shift or return;
    print("$m\n");
}

sub error
{
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
}

可以看相应的注释。

time.pl

#!/usr/bin/perl
#
use strict;
use warnings;

main(@ARGV);

sub main
{
    my $t = time;
    my @months = qw(jan feb mar apr may june july aug sep oct nov dec);
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
    $year+=1900;
    message("year: $year, month:$months[$mon],day: $mday");
    message("$year-$months[$mon]-$mday $hour:$min:$sec");
}

sub message
{
    my $m = shift or return;
    print("$m\n");
}

sub error
{
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
}

就一个关于localtime的building in function。

posted on 2012-03-11 23:54 韩英武 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/hanleilei/archive/2012/03/11/2391137.html

Perl 学习手札之十三:building function相关推荐

  1. 结束处理程序——Windows核心编程学习手札之二十三

    结束处理程序 --Windows核心编程学习手札之二十三 使用SEH可以只关注程序要完成任务,而运行中发生的错误,系统将会发现并通知.Windows引入SHE是为了便于操作系统的开发,使用SHE所造成 ...

  2. 内存映射文件——Windows核心编程学习手札之十七

    内存映射文件 --Windows核心编程学习手札之十七 与虚拟内存一样,内存映射文件保留地址空间,并将物理存储器提交给该区域,差别在于所提交的物理存储器是磁盘上有文件存在的空间,而非系统的页文件,一旦 ...

  3. 线程的堆栈——Windows核心编程学习手札之十六

    线程的堆栈 --Windows核心编程学习手札之十六 系统会在进程的地址空间内保存一些区域,同时也会在进程地址空间内为线程的堆栈保留区域.线程都有自己的堆栈,创建时,系统就保留一个堆栈空间区域,并将相 ...

  4. AWK 学习手札之一: an AWK tutorial

    AWK 学习手札之一: an AWK tutorial these article base on the AWK programming language by alfred v.aho brian ...

  5. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考:  Spring 注解学习手札( ...

  6. JavaScript学习(六十三)—typeof和instanceof检测数据类型的异同

    JavaScript学习(六十三)-typeof和instanceof检测数据类型的异同 一.JavaScript中的数据类型 在JavaScript中,我们把数据可以分为原始类型和引用数据类型. 原 ...

  7. JavaScript学习(五十三)—借用构造方法继承

    JavaScript学习(五十三)-借用构造方法继承 一.借用构造方法的继承 格式: function 构造方法1(形参1,形参2,形参3...){构造方法1.call(this,形参1,形参2,形参 ...

  8. JavaScript学习(四十三)—构造方法创建对象的图解和注意事项

    JavaScript学习(四十三)-构造方法创建对象的图解和注意事项 一.构造放法创建对象 之所以用构造放法创建对象就是为了解决工厂模式不能识别对象类型的问题.构造方法也可以被称为构造器,他的本质也是 ...

  9. 我的MYSQL学习心得(十三) 权限管理

    这一篇<我的MYSQL学习心得(十三)>将会讲解MYSQL的用户管理 在mysql数据库中,有mysql_install_db脚本初始化权限表,存储权限的表有: 1.user表 2.db表 ...

  10. [置顶] B版树莓派使用学习手札

    配置: 写道 树莓派个人实测 Q&A(最新修改使用windows连接远程桌面) http://www.eeboard.com/bbs/thread-5191-1-1.html 树莓派的默认账号 ...

最新文章

  1. 怎样在javascript函数中将变量传递给服务端脚本程序?
  2. 30个WordPress Retina(iPad)自适应主题
  3. 离散数学之集合论【中】
  4. Unity Text 插入超链接
  5. MongoDB 初体验:存储引擎 MMAPv1 与高内存消耗及升级迁移
  6. 项目管理九大知识点输入输出
  7. 一阶rc电路时间常数_关于RC延时电路的延时时间计算
  8. paip.java-asp-php-.net互相调用方法大总结
  9. 如何显示mac的隐藏文件夹
  10. 电信笔试C语言,2021中国电信考试试题附答案(12)
  11. java socket输入输出流
  12. 手写bpnn算法实现iris多分类
  13. mac怎么安全弹出u盘或移动硬盘
  14. 河海大学计算机专硕英语面试,河海大学翻译硕士(英语)考研复试流程
  15. python版我的世界怎么去天堂_我的世界中国版手游怎么去天堂 我的世界去天堂代码指令...
  16. 给变量取个名字(变量命名)
  17. 为什么爱奇艺会显示联通免流量服务器,联通爱奇艺流量定向包是怎么回事啊,是不是开通之后,这一个月里面看视讯免流量的...
  18. win10浏览器加载很慢_解决Win10 Edge浏览器打开网页慢的问题
  19. 微信小程序 MinUI 组件库系列之 progress 进度条组件
  20. mac 下使用ssh

热门文章

  1. paip.提升安全性--360,WI,AWVS三款WEB程序安全检测软件使用总结
  2. paip.提升开发效率-----vs2010源码选择字串高亮
  3. 【资产管理】2020年海外头部资管机构经营特点及启示
  4. 密码货币量化基金突然很热,但你可知道成功有多难?
  5. 阿里巴巴CTO程立:双11的再进化
  6. 树立榜样、褒奖开源领域领袖人物、杰出贡献人物
  7. 【数字信号调制】基于matlab GUI PCM编码调制【含Matlab源码 453期】
  8. openai-gpt_GPT-3不会承担您的编程工作
  9. 小学计算机应用到英语课教案,人教版小学英语三年级上册unit one hello!文具单词教学信息技术应用成果(教学设计方案).doc...
  10. linux mint 引导类型,LinuxMint18配置Grub2默认启动操作系统