Fehlermeldung:
crondump.pl: Variable "$pcd_version" will not stay shared at ~/mod_cron/crondump.pl line 548
8<-
Es scheint, dass Sie eine geschachtelte benannte Unterfunktion in Ihrem Perl-Skript haben, die auf eine lexikalische Variable verweist, die in einer äußeren benannten Unterfunktion definiert ist. Dies kann zu der Warnung "Variable ... will not stay shared" führen, die bedeutet, dass die Variable nicht mehr gemeinsam genutzt wird¹. Um dieses Problem zu beheben, können Sie eine der folgenden Möglichkeiten versuchen:
- Machen Sie die innere Unterfunktion anonym, indem Sie die Syntax `sub {}` verwenden. Wenn innere anonyme Unterfunktionen, die auf Variablen in äußeren Unterfunktionen verweisen, erstellt werden, werden sie automatisch an die aktuellen Werte dieser Variablen gebunden¹.
- Vermeiden Sie lexikalische Variablen, indem Sie `local our` verwenden. Dies erlaubt Ihnen, die Variable global zu deklarieren, aber ihren Wert lokal zu ändern².
- Erzwingen Sie, dass das reguläre Ausdrucksmuster kompiliert wird, wenn das `qr//` ausgeführt wird, indem Sie das Muster variabel machen. Sie können dies tun, indem Sie eine leere Variable an das Muster anhängen, z.B. `$np = qr/... (?? { $np })...$var/;`².
- Verschieben Sie das Muster aus der Unterfunktion heraus. Sie können das Muster in einer lexikalischen Variable außerhalb der Unterfunktion definieren, z.B. `my $np; $np = qr/... (?? { $np }).../;`².
Ich hoffe, diese Informationen helfen Ihnen, Ihre Perl-Warnung zu beheben.
Ich hoffe, diese Informationen helfen Ihnen, Ihre Perl-Warnung zu beheben. Wenn Sie weitere Hilfe benötigen, können Sie die Bing-Suche verwenden, um mehr Antworten zu finden. Ich wünsche Ihnen viel Erfolg mit Ihrem Perl-Skript!
(1) perl - What is the correct way to fix "variable ... will not stay ....
https://stackoverflow.com/questions/194 ... -shared-at.
(2) .
https://bing.com/search?q=perl+variable ... tay+shared.
(3) Perl: "Variable will not stay shared" - Stack Overflow.
https://stackoverflow.com/questions/253 ... tay-shared.
(4) Variable "..." will not stay shared ... - Perl Maven.
https://perlmaven.com/variable-will-not-stay-shared.
(5) undefined.
https://stackoverflow.com/questions/528 ... ub-in-perl.
(6) undefined.
http://www.unix.org.ua/orelly/perl/prog3/ch05_10.htm.
8<-
my $pcd_version='5.0.23';
Um local our für Ihre Variable zu verwenden, müssen Sie zuerst die Variable als eine globale Variable in Ihrem Paket deklarieren, z.B. `our $pcd_version;`. Dann können Sie die Variable mit `local` in einem bestimmten Block oder einer bestimmten Datei lokalisieren, z.B. `local $pcd_version = '5.0.23';`. Dies wird den Wert der Variablen nur innerhalb des Blocks oder der Datei ändern, aber nicht außerhalb. Zum Beispiel:
Code: Alles auswählen
#!/usr/bin/perl
use strict;
use warnings;
package Foo;
our $pcd_version; # declare global variable in package Foo
sub print_version {
print "The version is $pcd_version\n";
}
package main;
$Foo::pcd_version = '4.0.12'; # assign value to global variable
Foo::print_version(); # prints 4.0.12
{
local $Foo::pcd_version = '5.0.23'; # localize value in block
Foo::print_version(); # prints 5.0.23
}
Foo::print_version(); # prints 4.0.12 again
Ich hoffe, das hilft Ihnen zu verstehen, wie Sie local our in Perl verwenden können. Wenn Sie mehr darüber erfahren möchten, können Sie die folgenden Quellen konsultieren:
- [our - Perldoc Browser](^3^)
- [Perl our Function - Online Tutorials Library](^4^)
- [What is the difference between 'my' and 'our' in Perl?](^1^).
Quelle: Unterhaltung mit Bing, 26.11.2023
(1) our - Perldoc Browser.
https://perldoc.perl.org/functions/our.
(2) Perl our Function - Online Tutorials Library.
https://www.tutorialspoint.com/perl/perl_our.htm.
(3) What is the difference between 'my' and 'our' in Perl?.
https://stackoverflow.com/questions/845 ... ur-in-perl.
(4) .
https://bing.com/search?q=perl+local+our.
(5) undefined.
https://stackoverflow.com/questions/129 ... al-in-perl.
(6) undefined.
https://perldoc.perl.org/functions/local.
(7) undefined.
https://stackoverflow.com/questions/191 ... es-in-perl.
(8) en.wikipedia.org.
https://en.wikipedia.org/wiki/Perl.