在Perl中v1,v2等代表什么?

tho*_*oud 1 perl special-characters

我有一个数组,我正在尝试打印出来(用于获取SQL数据库信息):

my $variables_array = [[u1, answer1, Uvalue], ["v1", u2, v2, answer2, Vvalue]];
Run Code Online (Sandbox Code Playgroud)

当我打印出$variables_array所有变量,除了v2打印出我上面的格式.我搜索了google/SO,但v#在Perl中找不到任何特殊意义.我注意到记事本++改变了v#数组数组中的颜色,表明它是某种特殊变量,但我不知道它是什么?有人可以为我阐明一下,我很困惑.

amo*_*mon 8

Perl有很多不同的文字

  • 数字像123,123.0,1.23e2,0x7b
  • 字符串常量"abc",'abc',q/abc/,...
  • 裸字
    • Barewords看起来像没有param列表的函数调用
    • 在特殊的地方,即使严格要求也是如此: Foo::Bar->new()
    • 没有strict 'refs',不表示sub的裸字被视为字符串.
    • 胖逗号的LHS =>总是自动引用
    • 除非它们是文件测试运算符,否则带有前导减号的Barewords始终是字符串. -abc eq "-abc"
  • V字符串(V在向量或版本中). v1.2.3

V字符串由一系列由句点分隔的数字组成.每个数字都被翻译成相应的字符.由于他们是字符串,他们可以进行比较lt,gt等等.

它们适用于IP地址或版本号.它们不适合打印出来,因为低数字表示不可打印的字符.

$ perl -E'say v49.50.51'
123
Run Code Online (Sandbox Code Playgroud)

这个故事的主旨?总是use strict; use warnings;,也许看看qw//引用运算符:

my $variables_array = [[qw/u1 answer1 Uvalue/], [qw/v1 u2 v2 answer2 Vvalue/]];
# or verbose:
my $variables_array = [['u1', 'answer1', 'Uvalue'], ['v1', 'u2', 'v2', 'answer2', 'Vvalue']];
Run Code Online (Sandbox Code Playgroud)

(qw不插入,在任何空格处拆分字符串,并且等于字符串列表)