我开始使用Visual Studio Code,它的语法校正警告非常酷。我曾经在Vim中的Linux shell下工作了20年。
但是现在我看到了太多与全局变量相关的错误,比如Global symbol "%contents" requires explicit package name
,这非常令人不安。
它可能更多的Visual Studio代码相关,像一些扩展插件可以做到这一点。
或者它可以通过一些Perl函数来处理,所以它也可以解决经典的“perl -c”shell检查。
我的情况:
我有Perl FCGI脚本 fcgi.cgi,它在启动时是require functions.pl
,然后使用全局哈希变量将所有页面从文件加载到内存中,每个页面(1762个文件,大小为16 MB)分为“html”和“pl”文件,并在大约20个线程中运行。
在任何Apache调用,它只是调用一个线程,并运行“eval”对选定的“pl”页从内存,填充选定的“html”,并超快生成页面,像在0,1秒文件“functions.pl“只有“sub”函数,他们是可用的所有“pl”脚本.
Files:
|/fcgi-bin/fcgi.cgi
|/pages/page1.pl
|/pages/page1.html
|/pages/page2.pl
|/pages/page2.html
|/functions/functions.pl
那么,有没有办法在“/pages/page1.pl“和“/functions/functions.pl“的头文件中添加一些信息,使“/fcgi-bin/fcgi.cgi”成为父脚本呢?这样,它就可以像在一个文件中一样检查语法了。
对于“/pages/page1.pl“,“/fcgi-bin/fcgi.cgi”是父级,“/functions/functions.pl“是库。
我可以想象,只是为了语法检查,我可以复制这些文件的内容,在开始检查文件,语法检查将工作。
或者,我可以简单地添加一些扩展名,例如:
#!/usr/bin/perl
#this is /pages/page1.pl
###extenstion call add for check: "/fcgi-bin/fcgi.cgi"###
###extenstion call add for check: "/functions/functions.pl"###
#normal code, using variables from /fcgi-bin/fcgi.cgi and functions from /functions/functions.pl
所以我希望这是可以理解的。这与特定的代码无关,这是一个常见的问题,在其他编程语言中也是如此。所以没有示例代码。我希望有一些Visual Studio特定的代码解决方案。我认为,Perl解决方案只能通过重新编程我20年的工作来实现,以一些“使用Lib包”的定义,这是不可能的。
1条答案
按热度按时间gt0wga4j1#
听起来您不喜欢新环境显示您以前忽略(或没有看到)的警告。如果您不想修复这些警告,您可能不需要显示这些警告的工具。
停止使用全局变量,这是一个很好的设计决策。而且,如果必须使用它们,请使用
use vars
或our
声明它们,或者使用全限定名称。但是,您的问题似乎是,您必须在许多难以处理的地方这样做。(但是,您有Perl和源代码控制!)
我可能会建议您弄清楚如何关闭VSCode对
perl
的调用中的警告,就像使用-X
开关一样,但如果您需要语法检查,这实际上并没有什么帮助。local $^W=0
可能会在某些地方有所帮助。