Leser: 1
8 Einträge, 1 Seite |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
################################################
## Verify an e-mail address
################################################
sub mail_verify {
my $addr = shift;
## Format the address
my ($login, $host) = $addr =~ /^(.+)\@(.+)$/;
$login =~ s/\.//g;
$host =~ s/[\.\-]//g;
## Make sure address is valid
if (($login =~ /\W/) || ($host =~ /\W/)) { return 0; }
else { return 1; }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl
use strict;
print "\n Bitte hier eine Mail Adresse eingeben :";
chomp (my $addr=<STDIN>);
print "\n Adresse = " .$addr;
my ($login, $host) = $addr =~ /^(.+)\@(.+)$/; #split('@',$addr,2)
print @_;
print "\n";
print $_;
print "\n login:".$login;
print "\n host:".$host."\n";
$login =~ s/\.//g;
$host =~ s/\.//g;
#$host =~ s/[\.\-]//g;
print " login nach bearbeitung :".$login."\n";
print " host nach bearbeitung :".$host."\n";
$login =~ s/\.//g;
$login =~ s/[\.\-]//g;
QuoteWenn ich übrigens die von dir vorgeschlagene Änderung vornehme, dann akzeptiert das Skript E-Mail-Adressen mit "-" vor dem "@", aber wiederum keine E-Mail-Adressen à la name@erstens-zweitens-drittens.com, also mit zwei "-" nach dem @.
QuoteBitte hier eine Mail Adresse eingeben :name@erstens-zweitens-drittens.com
Adresse = name@erstens-zweitens-drittens.com
login:name
host:erstens-zweitens-drittens.com
login nach bearbeitung :name
host nach bearbeitung :erstens-zweitens-drittenscom
QuoteVerstehe ich das richtig, dass dieser Teil des Skripts (siehe erstes Posting) bei einer angegebenen E-Mail-Adresse die Adresse in einen Teil vor und einen nach dem "@" auftrennt
Quotedann jeweils "." (siehe $login)
Quoteund/oder "-" entfernt (siehe $host)
Quoteschließlich per /\W/ prüft, ob dann $login oder $host noch ein Zeichen enthält, was weder Buchstabe noch Ziffer noch Unterstrich ist?
QuoteWenn dem so ist, müsste das Skript nach meiner Änderung nun alle E-Mail-Adressen akzeptieren, die aus Buchstaben, Ziffer, Unterstrich, Bindestrich und Punkt zusammengesetzt sind... Oder?
QuoteIch verstehe dann nur noch nicht, warum bei deinem Vorschlag E-Mail-Adressen mit einem Bindestrich vor dem "@" akzeptiert werden...?!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sub mail_verify {
my $addr = shift;
# copied code from Mail::Sendmail begins here
my $word_rx = '[\x21\x23-\x27\x2A-\x2B\x2D\x2F\w\x3D\x3F]+';
my $user_rx = $word_rx # valid chars
.'(?:\.' . $word_rx . ')*' # possibly more words preceded by a dot
;
my $dom_rx = '\w[-\w]*(?:\.\w[-\w]*)*'; # less valid chars in domain names
my $ip_rx = '\[\d{1,3}(?:\.\d{1,3}){3}\]';
$address_rx = '((' . $user_rx . ')\@(' . $dom_rx . '|' . $ip_rx . '))';
# copied code from Mail::Sendmail ends here
# now use the regex:
$addr =~ /^$address_rx$/;
}
8 Einträge, 1 Seite |