Вот что сейчас делает ваш код:
# Assign 'rowfetch' to the value fetched from:
# The function 'GetCharValue' which is a method of:
# An Value in A Hash Identified by the key "Row" in:
# Either a Hash-Ref or a Blessed Hash-Ref
# Where 'GetCharValue' is given the parameter "meetdays"
$rowfetch = $DBS->{Row}->GetCharValue("meetdays");
# Assign $rowfetch to the number of times
# the default variable ( $_ ) matched the expression /[-]/
$rowfetch = /[-]/gi;
# Print the number of times.
printline($rowfetch);
Что эквивалентно написанию следующего кода:
$rowfetch = ( $_ =~ /[-]/ )
printline( $rowfetch );
Волшебство, которое вы ищете, это
=~
токен вместо
=
Первый - это оператор Regex, а второй - оператор присваивания.
Существует также много различных операторов регулярных выражений:
if( $subject =~ m/expression/ ){
}
сделает данный кодовый блок выполненным, только если $ subject соответствует заданному выражению, и
$subject =~ s/foo/bar/gi
Заменяет (s/
) все экземпляры «foo» на «bar», без учета регистра (/i
) и повторяет замену более одного раза (/g
) для переменной $subject
.