我開始使用 Visual Studio Code,它帶有語法更正警告非常酷。我曾經在 Vim 的 Linux shell 下作業了 20 年。
但是現在我可以看到太多與全域變數相關的錯誤,比如Global symbol "%contents" requires explicit package name. 這很令人不安。
它可能與 Visual Studio Code 相關,就像一些擴展插件可以做到的那樣。
或者它可以通過一些 Perl 函式來處理,所以它也可以解決經典的“perl -c”shell 檢查。
我的情況:
我有 Perl FCGI 腳本fcgi.cgi,它require functions.pl在啟動時,然后使用全域散列變數將所有頁面從檔案加載到記憶體,每個頁面的“html”和“pl”檔案(1762 個檔案,大小 16MB)和運行在 20 個執行緒中。
在任何 Apache 呼叫中,它只是呼叫一個執行緒,并在記憶體中選定的“pl”頁面上運行“eval”,填充選定的“html”,然后超快速生成頁面,就像在 0.1 秒內一樣。檔案“functions.pl”只有“子”函式,它們可用于所有“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 包”定義來完成,這是不可能的。
uj5u.com熱心網友回復:
聽起來您不喜歡您的新環境向您顯示您之前忽略(或未看到)的警告。如果您不想修復這些問題,您可能不需要向您展示它們的工具。
停止使用全域變數,這是一個很好的設計決策。并且,如果您必須使用它們,請使用 or 宣告它們use vars,our或使用完全限定名稱。
但是,您的問題似乎是您必須在許多難以處理的地方執行此操作。(但是,你有 Perl 和源代碼控制!)
我可能會建議您弄清楚如何在 VSCode 的呼叫中關閉警告perl,就像使用-X開關一樣,但如果您想要進行語法檢查,這并不是那么有用。Alocal $^W=0可能在某些地方有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/486987.html
