在使用"智能匹配(~~)"测试我的Perl代码的过程中,我遇到了这个问题.42,42.0,"42.0","42"之间是否有任何区别
$var1 = "42";
$var2 = "42.0";
$a = $var1 ~~ $var2;
Run Code Online (Sandbox Code Playgroud)
我得到$a0; 这意味着$var1并$var2不平等.
请解释.
当我试图在数组中打印特定元素时,我错误地在[]内输入了相同数组的名称作为元素,并获得了一些输出,如图所示.我认为它占用了数组的大小并打印了那些字符,这被输出证明是错误的.
@array = (0..10, 12);
print "@array[@array]";
Run Code Online (Sandbox Code Playgroud)
版画
Use of uninitialized value in join or string at
/home/VAR121/Program/Practise_Perl/Arrays.pl line 9.
0 1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
我向前迈了一步,编辑了如下所示的代码
print "@array[@array[@array]]";
output as: `0 1 2 3 4 5 6 7 8 9 10 0` Use of uninitialized value in join or string at
/home/VAR121/Program/Practise_Perl/Arrays.pl line 9.
Run Code Online (Sandbox Code Playgroud)
现在我尝试在第二个数组中放入一个数字,而不是再次给出数组名称,如下所示.
print "@array[@array[1,2,3]]";
Run Code Online (Sandbox Code Playgroud)
输出为
1 2 3
Run Code Online (Sandbox Code Playgroud)
但这次没有警告信息.
是什么打印?这种行为背后的原因是什么?
我想更改大量文件的扩展名,
示例:"ABC.dat.length.doc.fasta"
期望:ABC.mat
chomp功能的目的和优点是什么?它能做什么?使用chomp会产生任何问题吗?或者在文件打开后使用chomp是必要的吗?
我有这样的数据,每行都有固定数量的字符(8)
RYRYRYRR
YRRRRYRR
YYRRRRRY
RYYRRRRR
RRRRRRRY
RYRRRRRY
Run Code Online (Sandbox Code Playgroud)
我需要分别输出"Y"和"R"的数量,如下所示.
RYRYRYRR 3 5
YRRRRYRR 2 6
YYRRRRRY 3 5
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用grep的脚本,如下所示.
grep -c'Y'test.dat正在打印一些像13这样的数字
我写了一个小的bash程序,需要读取一个带有名字的文件input.我希望脚本打印消息file not found,如果找不到文件则退出或自行终止.
我在bash中发现了一个错误吗?
Test
前面带有转义字符'\'的数字会产生垃圾值Ex:
$a = \12;
print $a;
Run Code Online (Sandbox Code Playgroud)
此代码给出了以下输出
SCALAR(0x2001ea8)
Run Code Online (Sandbox Code Playgroud)
当我再次执行程序时输出会改变.
如果我在用户给出任何以零开头的输入时从用户获取值(数字),我不希望它将其解释为八进制数.所以如果数字从零开始,我想逃避零.
在Perl我知道,我们可以使用"$x *= $n"用于乘x用n.所以我错误地使用"**="和输出似乎是非常高的数字非常小的值"n".那个运营商做什么?
请不要说这只是指数级的.它不是.请使用我显示的语法验证