Нужно проверить, заканчивается ли строка определенным расширением или нет в скрипте Perl - PullRequest
0 голосов
/ 31 января 2019
input1 = "charles.ma@abc.com"
input2 = "charles.ma"

Необходимо напечатать значение, если оно заканчивается только .ma, поэтому должен печататься только input2.

Функция должна передать input1, поскольку она не заканчивается на .ma, за которой следуетна @abc.

Ответы [ 3 ]

0 голосов
/ 31 января 2019

Вы можете использовать регулярное выражение:

print $string if $string =~ /\.ma\z/;

Или использовать substr :

print $string if '.ma' eq substr $string, -length('.ma');

или использовать rindex

print $string if length($string) == length('.ma') + rindex $string, '.ma';
0 голосов
/ 31 января 2019

Неясно, каковы ваши данные на самом деле.Он заканчивается на «.ma» или «.ma»? В моем коде ниже я предположил последнее.

Это довольно простое использование регулярных выражений.

#!/usr/bin/perl

use strict;
use warnings;

while (<DATA>) {
  print if /\.ma"$/;
}

__DATA__
input1 = "charles.ma@abc.com"
input2 = "charles.ma"
0 голосов
/ 31 января 2019

Вы можете создать функцию:

sub end_by($){
    my $string = shift;
    if ($string =~ m/\.ma$/) {
        return 1;
    } else {
        return 0;
    }
}

И так назвать ее так:

print $input1 if end_by($input1);
print $input2 if end_by($input2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...