7*4 2009-05-10 10:24 采纳率: 50%
浏览 337
已采纳

Perl 语言中 my 和 our 的区别是什么?

I know what my is in Perl. It defines a variable that exists only in the scope of the block in which it is defined. What does our do? How does our differ from my?

转载于:https://stackoverflow.com/questions/845060/what-is-the-difference-between-my-and-our-in-perl

  • 写回答

12条回答 默认 最新

  • 谁还没个明天 2009-05-20 02:22
    关注

    Great question: How does our differ from my and what does our do?

    In Summary:

    Available since Perl 5, my is a way to declare:

    • non-package variables, that are
    • private,
    • new,
    • non-global variables,
    • separate from any package. So that the variable cannot be accessed in the form of $package_name::variable.


    On the other hand, our variables are:

    • package variables, and thus automatically
    • global variables,
    • definitely not private,
    • nor are they necessarily new; and they
    • can be accessed outside the package (or lexical scope) with the qualified namespace, as $package_name::variable.


    Declaring a variable with our allows you to predeclare variables in order to use them under use strict without getting typo warnings or compile-time errors. Since Perl 5.6, it has replaced the obsolete use vars, which was only file-scoped, and not lexically scoped as is our.

    For example, the formal, qualified name for variable $x inside package main is $main::x. Declaring our $x allows you to use the bare $x variable without penalty (i.e., without a resulting error), in the scope of the declaration, when the script uses use strict or use strict "vars". The scope might be one, or two, or more packages, or one small block.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(11条)

报告相同问题?

悬赏问题

  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM