找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 704|回复: 2

[问题求助] [ 已解决 ] [Perl]请问,空的花括号 {} 能运行吗?

[复制链接]
发表于 2026-3-29 18:34:10 | 显示全部楼层 |阅读模式
本帖最后由 zzz19760225 于 2026-3-30 10:48 编辑

kuohao.pl
  1. {}
  2. <STDIN>;
复制代码

输出
  1. perl ./kuohao.pl
  2. syntax error at ./kuohao.pl line 2, near ">;"
  3. Execution of ./kuohao.pl aborted due to compilation errors.
复制代码

按照AI自动信息deepseek的说法,是应该可以的,但是实际执行卡在BOM字头什么的。
请问,如果按照语句结构,是可以执行的吗?
发表于 2026-3-29 22:12:50 | 显示全部楼层
本帖最后由 523066680 于 2026-3-29 22:23 编辑

你打开警告,去掉STDIN
  1. use Modern::Perl;
  2. {}
复制代码


就有提示什么问题:
Useless use of anonymous hash ({}) in void context at line 2.

被识别为了匿名的 哈希 {},这个哈希没有意义 (没有赋值给某个变量,没有参与任何操作)
想要让其运行通过,在{}右侧加;分号,告诉解释器这是一个代码块

`{};`

又或者在里面加分号,

`{;}` 这也是代码块

既然是被识别为了 匿名哈希,那么匿名数组应该也有类似情况
  1. use Modern::Perl;
  2. []
复制代码

Useless use of anonymous array ([]) in void context

因为 [] 只能是和数组有关的东西,所以就算 `[];` 也无济于事,依然提示错误。除非是正常的赋值场景、返回值场景。

评分

参与人数 1技术 +1 收起 理由
zzz19760225 + 1 乐于助人

查看全部评分

 楼主| 发表于 2026-3-30 10:46:02 | 显示全部楼层
本帖最后由 zzz19760225 于 2026-3-30 10:50 编辑

多谢帮助,否则要在坑里转很久,也找不到原因。
deepseek的说法:
  1. # 这些测试在不同Perl版本中行为一致

  2. # 1. 空代码块 - 始终有效
  3. { }  
  4. print "空代码块没问题\n";

  5. 总结

  6.     { } - ✅ 可以执行,空代码块,什么都不做

  7.     ( ) - ❌ 语法错误,不能单独使用(除非在特定上下文中如函数参数)

  8.     < > - ✅ 可以执行,返回空列表,相当于glob("")

  9.     <>; - ✅ 语法正确,但会阻塞等待输入(钻石操作符)

  10. 所以您测试的结果会是:花括号、尖括号、钻石操作符都能通过语法检查,只有圆括号会报语法错误。
复制代码

上一次好像也是一个问题,被引导到BOM,循环无解,感觉可能走岔了,所以没有办法,只好求助。
谢谢帮助!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-4-26 14:54

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表