标签: special-variables

如何在Perl子例程中使用$ a和$ b

我想在我的无限二进制函数中使用$a$b变量,就像它完成sort {$a <=> $b} (1, 2, 3)但我无法弄清楚为什么代码

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

Foo::Bar(sub { $a + $b });

package Foo;
sub Bar {
    my ($function) = @_; 

    for my $i (1, 2, 3) {
        local ($a, $b) = ($i, $i);
        print $function->() . "\n";
    }
}    
Run Code Online (Sandbox Code Playgroud)

不起作用.而

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

Foo::Bar(sub { $_ });

package Foo;
sub Bar {
    my ($function) = @_; 

    for my $i (1, 2, 3) { …
Run Code Online (Sandbox Code Playgroud)

perl scope global-variables special-variables

10
推荐指数
1
解决办法
2137
查看次数

perl特殊变量$ - [0]和$ + [0]的含义是什么

我想知道perl的特殊变量的含义$-[0]$+[0]

我用google搜索,发现它$-代表页面上剩下的行数,$+代表最后一个搜索模式匹配的括号.

但我的问题是正则表达式的背景是什么$-[0]$+[0]意味着什么.

如果需要代码示例,请告诉我.

perl predefined-variables special-variables

9
推荐指数
3
解决办法
4251
查看次数

perl中的动态变量

我想知道如何在Perl中做我在lisp中常做的事情:

(defvar *verbose-level* 0)
(defun my-function (... &key ((:verbose-level *verbose-level*) *verbose-level*) ...) ...)
Run Code Online (Sandbox Code Playgroud)

这意味着它my-function在当前的详细程度上运行,但我可以将它传递给不同的级别,这也将影响它的所有调用:

(defun f1 (&key ((:verbose-level *verbose-level*) *verbose-level*))
  (format t "~S: ~S=~S~%" 'f1 '*verbose-level* *verbose-level*)
  (f2 :verbose-level 1)
  (format t "~S: ~S=~S~%" 'f1 '*verbose-level* *verbose-level*)
  (f2 :verbose-level (1+ *verbose-level*))
  (format t "~S: ~S=~S~%" 'f1 '*verbose-level* *verbose-level*))
(defun f2 (&key ((:verbose-level *verbose-level*) *verbose-level*))
  (format t "~S: ~S=~S~%" 'f2 '*verbose-level* *verbose-level*))
[17]> (f1)
F1: *VERBOSE-LEVEL*=0
F2: *VERBOSE-LEVEL*=1
F1: *VERBOSE-LEVEL*=0
F2: *VERBOSE-LEVEL*=1
F1: *VERBOSE-LEVEL*=0
NIL
[18]> (f1 :verbose-level 4) …
Run Code Online (Sandbox Code Playgroud)

perl special-variables

7
推荐指数
1
解决办法
526
查看次数

__FILE__ == $ PROGRAM_NAME在ruby中意味着什么?

在查看Ruby中的代码时,我偶然发现了这个sintax.代码是:

if __FILE__ == $PROGRAM_NAME
  #some code...
end
Run Code Online (Sandbox Code Playgroud)

我想__FILE__是一个变量,它让我知道我所在文件的名称?但那么什么是$PROGRAM_NAMEsimbolize呢?另外,为什么这个if语句是必要的,因为程序可以使用或不使用它?

ruby variables special-variables

6
推荐指数
1
解决办法
4658
查看次数

我在哪里可以找到有关Perl特殊变量的信息?

Perl有不少特殊的变量,例如@F,$!,%!...等,哪里都是Perl的特殊变量记录?

perl built-in special-variables

5
推荐指数
2
解决办法
398
查看次数

Perl隐式关闭重置$.变量

Perl 状态的文档如果使用隐式关闭close,$.则不会重置open.我试图确切地看到这意味着什么,但无法让它发生.这是我的脚本:

use strict;
use warnings;
use autodie;
my @files = qw(test1.txt test2.txt test3.txt);

#try with implicit close
for my $file (@files){
    open my $fh, '<', $file;
    while(<$fh>){
        chomp;
        print "line $. is $_\n";
    }
    #implicit close here
}
Run Code Online (Sandbox Code Playgroud)

以下是所有三个文件的内容:

line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9
line 10
Run Code Online (Sandbox Code Playgroud)

因为我没有显式调用close,所以close应该使用隐式(我认为)并且$.不应该重置.但是,当我运行脚本时,我得到这个输出,显示$.重置:

line 1 is line 1 …
Run Code Online (Sandbox Code Playgroud)

perl file-handling special-variables

5
推荐指数
1
解决办法
213
查看次数

在 Lua 中使用 arg 作为参数名称有副作用吗?

我用作arg函数的参数名称:

function foo(cmd, arg)
    -- etc.
end
Run Code Online (Sandbox Code Playgroud)

我刚刚了解到这是一个特殊的隐藏变量,它在使用变量参数arg时表示参数表:

function foo(bar, baz, ...)
    -- `arg` now holds arguments 3 and up
end
Run Code Online (Sandbox Code Playgroud)

arg在我的代码中用作参数名称是否会出现任何问题?

parameters lua arguments special-variables

5
推荐指数
1
解决办法
254
查看次数

perl的$ ^ I的任何文档?

我已经$^I在perl脚本中用于有条件地搜索和替换.我想知道是否$^I在缓冲区中复制文件并在处理缓冲区后将整个缓冲区写回文件,或者在行编辑中.

代码如下

$^I = "";
my $flag = 0;

while ($line = <>) {
    if($line=~ m/some string/i) {
        $flag = 1;
    }
    if(!$flag) {
        $line =~ s/string/replace/g;
    } 
}

print $line;
Run Code Online (Sandbox Code Playgroud)

regex perl file-io special-variables

3
推荐指数
1
解决办法
143
查看次数

宏扩展下特殊变量的行为

FUZZ> (defvar *foo* nil)
*FOO*
FUZZ> (defmacro bar ()
        (format t "foo: ~A" *foo*)
        `(+ 1 1))
BAR
FUZZ> (defmacro bot ()
        (let ((*foo* 17))
          `(bar)))
BOT
FUZZ> (bot)
foo: NIL
Run Code Online (Sandbox Code Playgroud)

宏观扩张的心理模型(显然是错误的)表示以下顺序发生:

运行宏扩展bot(绑定*foo*17),运行宏扩展bar,打印当前值*foo*(正在17),并返回表单(+ 1 1),这不是宏,宏扩展时间现在结束,最后评估表单(+ 1 1),并返回2.

为什么我错了?

有没有一种简单的方法可以做我想做的事情?

macros common-lisp special-variables

3
推荐指数
1
解决办法
70
查看次数

迭代$ @的值

我想迭代给bash脚本的参数,例如:

./bash_script file1 file2 file3
Run Code Online (Sandbox Code Playgroud)

$@ 给了我给脚本的所有文件但我如何迭代文件?

我想cat每个文件并删除内容使用awk(我知道如何做到这一点,这是解开包装$@让我感到困惑).

bash special-variables

2
推荐指数
1
解决办法
59
查看次数