Portál AbcLinuxu, 20. února 2026 22:15
sub check_pkgname($) {
($_[0] =~ m/^\w+(|(\-|\w)*\w)(|\/\w+(|(\-|\w)*\w))$/)
? $pkg = $_[0]
: die "Not a valid package name: $_[0]!";
}
a teď když spustím check_pkgname("něco"), tak to proběhne. Když to regexpu neodpovídá, tak vypíše:
Not a valid package name: (whatever)! at ./test.pl line 7.Proč tam píše "at ./test.pl line 7"? To nechci. Ovšem horší je tohle: jakmile se pokusím o
check_pkgname($_[0]), tak hodí:
Use of uninitialized value in pattern match (m//) at ./test.pl line 7. Use of uninitialized value in concatenation (.) or string at ./test.pl line 7. Not a valid package name: ! at ./test.pl line 7.Napadlo mě zkusit ještě
check_pkgname(int $_[0]), to hodí:
Use of uninitialized value in int at ./test.pl line 12.Co dělám špatně?
Když to regexpu neodpovídá, tak vypíše:Sorry, nevěděl jsem, že je to běžný chování funkceNot a valid package name: (whatever)! at ./test.pl line 7.Proč tam píše "at ./test.pl line 7"? To nechci.
die(), jsem trouba
die "Not a valid package name: (whatever)!\n";
shiftu, že?
Pokud volam $pkgname="nazev-1-2/balicku-xyz-321"; check_pkgname($pkgname);, tak mi to probehne korektne.
Btw. moc jsem nepochopil proc je v tom regularnim vyrazu ^\w+(|(\-|\w)*\w)(|\/\w+(|(\-|\w)*\w))$ to \w za (\-|\w)*
Btw. moc jsem nepochopil proc je v tom regularnim vyrazuProtože chci aby to prošlo jen tehdy, když string bude končit na '^\w+(|(\-|\w)*\w)(|\/\w+(|(\-|\w)*\w))$to \w za (\-|\w)*
\w' a ne '-'.
/^\w(?:[-\w]*\w)?(?:\/\w(?:[-\w]*\w)?)?$/To
(?:) místo () je jen kvůli rychlosti - neplní se $n registry. Pokud by ty slova nikdy nebyli méně než dvouznakové, tak by se dokonce dalo napsat/^\w[-\w]*\w(?:\/\w[-\w]*\w)?$/
$n registr?
perlvar $<digits>
Contains the subpattern from the corresponding set of capturing
parentheses from the last pattern match, not counting patterns
matched in nested blocks that have been exited already.
(Mnemonic: like \digits.) These variables are all read-only
and dynamically scoped to the current BLOCK.
Jinak \1..\9 by se mělo používat jen v m-regexpu nebo na levé straně (první parametr) s-regexpu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.