perl子程序的运用及子程序中变量私有(my)声明的重要性
发布时间:2023-08-10 18:13:49
标签:子程序,变量私有
一个转换程序,简单的把DNA序列中的A转变成T,第一种情况没有使用私有变量。
#!/bin/perl
#下面是一段DNA序列
$DNA=ATTATATAT;#这里是我们的序列
$result=A_to_T($DNA);
print "I changed all $DNA A to T, and the we get the result $result\n\n";
sub A_to_T
{
my ($input)=@_;
$DNA=$input;#没有使用私有变量
$DNA=~s/A/T/g;
return $DNA;
}
结果如下:
F:\>perl\a.pl
I changed all TTTTTTTTT A to T, and the we get the result TTTTTTTTT
F:\>
这里我们发现$DNA的值变成了TTTTTTTTT,而不是以前ATTATATAT。这是因为在子程序中,我们使用了同样的$DNA 变量,而在子程序中它的值已经被改变了。所以输出的时候就是改变以后的值。
下面把子程序中的 $DNA 进行私有变量声明:
#!/bin/perl
#下面是一段DNA序列
$DNA=ATTATATAT;
$result=A_to_T($DNA);
print "I changed all $DNA A to T, and the we get the result $result\n\n";
sub A_to_T
{
my ($input)=@_;
my $DNA=$input;
$DNA=~s/A/T/g;
return $DNA;
}
结果如下:
F:\>perl\a.pl
I changed all ATTATATAT A to T, and the we get the result TTTTTTTTT
F:\>
这样就正常了。
当然你可以说,在子程序中可以完全不用$DNA这一个变量,就如同下面一样:
#!/bin/perl
#下面是一段DNA序列
$DNA=ATTATATAT;
$result=A_to_T($DNA);
print "I changed all $DNA A to T, and the we get the result $result\n\n";
sub A_to_T
{
my ($input)=@_;
$dna_to_change=$input;
$dna_to_change=~s/A/T/g;
return $dan_to_change;
}
得到的也是正常的结果:
F:\>perl\a.pl
I changed all ATTATATAT A to T, and the we get the result
F:\>
但是,没有人能够保证你不会一时糊涂,在子程序用了程序中的变量。或者当你第一次使用的时候,可以避免,当你过来几个月以后回过头再来使用的时候,就不能保证完全正确了,所以为了代码的通用性,还是在所有的子程序中使用my私有变量吧。
0
投稿
猜你喜欢
- 问题用过 tensorflow 的人都知道, tf 可以限制程序在 GPU 中的使用效率,但 pytorch 中没有这个操作。思路于是我想到
- 前言:列表框控件显示多行文本,用户可以选中一行或者多行。所有的文本只能使用一种字体,不能混合使用多种字体。1 属性常用的参数列表如下:1.1
- Yahoo和Google都有自己的建设高性能网站最佳实践, 我不做赘述, 需要了解的自行查阅资料:Yahoo的: Best Practice
- 实例如下:</pre><pre name="code" class="python"
- 说起页面执行时间相信大家并不陌生,如果你经常逛论坛,就会发现很多论坛底部都显示有页面执行时间,那么什么是页面执行时间呢?我个人理解是一个网页
- 1.5 学习ASP.net 的过程中如何求助--加入 ASPNG 讨论列表 Charles Carroll 作为不断壮大的 ASP.NET
- Pyppeteer简介Puppeteer 是 Google 基于 Node.js 开发的一个工具,有了它我们可以通过 JavaScript
- 一、简介Locust 是一个易于使用,分布式,用户负载测试工具。它用于负载测试 web 站点(或其他系统),并计算出一个系统可以处理多少并发
- 前言本文的操作环境:ubuntu,Python2.7,采用的是Pycharm进行代码编辑,个人很喜欢它的代码自动补齐功能。示例图如上图,我们
- 在pandas中怎么样实现类似mysql查找语句的功能:select * from table where column_name = so
- 本文实例为大家分享了wxPython电子表格功能的具体代码,供大家参考,具体内容如下#!/usr/bin/env python#encodi
- Scrapy中Spider的用法Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中
- 一、环境pip install opencv-pythonpython3.9pycharm2020人狠话不多,直接上代码,注释在代码里面,不
- 一、简介shutil是 python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建、删除、查看等方法,还
- http_request2.py用于发起http请求#读取多条测试用例#1、导入requests模块import requests#从 cl
- 简洁优雅的 C 写法:int a = 1; int b = 2; int temp; temp = a;&nb
- 随着网页技术的发展,网络视觉设计与之前以程序员为主导的审美特征相比,具有了极大的改观。同时,随着美术、音乐、舞蹈人才的加入,网络开始在这一社
- 我曾以为,写脚本是很难的,直到我遇到了Python前言随着国内版权意识的跟进,很多影视音乐资源开始收费,而且度盘又经常随意封杀各种资源,所以
- 前言Python语言的turtle库是一个直观有趣的图形绘制函数库,是python语言标准库之一。turtle库也叫海龟库,是turtle绘
- MySQL出错代码列表:1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库