有没有办法获取编码__DATA__令牌的行号(可能还有文件名)?或者以其他方式知道原始源文件中从DATA文件句柄读取的一行数据来自的实际行号?
请注意,$.从DATA文件句柄读取时从1开始计数。因此,如果将__DATA__令牌的行号添加到了$.它,那将是我正在寻找的东西。
例如:
#!/usr/bin/perl
while (<DATA>) {
my $n = $. + WHAT??;
die "Invalid data at line $n\n" if /bad/;
}
__DATA__
something good
something bad
Run Code Online (Sandbox Code Playgroud)
我想说的是“第9行的数据无效”,而不是“第2行”(如果$.它本身被使用,这就是您得到的)。
来自perlre手册页:
如果“(*ACCEPT)”位于捕获组内部,则这些组将在遇到“(*ACCEPT)”的点标记为结束。例如:
Run Code Online (Sandbox Code Playgroud)'AB' =~ /(A (A|B(*ACCEPT)|C) D)(E)/x;将匹配,$1 将是“AB”,$2 将是“B”...
但是,如果第二个捕获组有量词,则模式永远不会匹配:
'AB' =~ /(A (A|B(*ACCEPT)|C)+ D)(E)/x or die "No match"; #dies
^
Run Code Online (Sandbox Code Playgroud)
为什么是这样?将+替换为*或 {0,99} 没有什么区别。 捕获组上包含 的任何(*ACCEPT)量词似乎都会阻止 *ACCEPT 工作。预先感谢您的任何帮助。
难道真的没有简单的映射来跳转到段落的第一行或最后一行吗?
{和是“独占”命令,因此如果有一个},它们会跳转到段落之前或之后的空行,否则跳转到段落的实际第一行或最后一行(即,当段落位于段落的顶部或底部时)缓冲)。
这种差异似乎使得不可能以任何直接的方式进行补偿,例如,{w如果前面有空行,则跳转到段落的开头,但对于文件中的第一段则执行错误的操作。
property variant a: {}
似乎不起作用。 a最终是未定义的,而不是一个空字典。
我对 Javascript 不太有经验...初始化属性以保存空字典的正确方法是什么?
以下 qml 在控制台上打印“qrc:/main.qml:13: TypeError: Type error”。但是,如果a被初始化为,比如说{"dummyentry": 42},那么就会记录预期的结果。
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
ApplicationWindow {
visible: true; width: 600; height: 200
property variant a: {}
Component.onCompleted: {
console.log("initial a="+JSON.stringify(a)) // TypeError: Type error
a["newkey"] = 999 // gets "TypeError: Type error"
console.log("updated a="+JSON.stringify(a))
}
}
Run Code Online (Sandbox Code Playgroud)