Использую следующий скрипт для рассылки сообщений юзерам с определенными тарифными пакетами и из определенных груп.
Изменить для рассылки исходя из номера дома и номера улицы, думаю, элементарно.
##!/usr/local/bin/perl
use strict;
use warnings;
use DBI;
#my ( $nquery );
#my @row;
my $debug = 1 ;
#NODENY host,login,password,database
my ( $nd_host, $nd_login, $nd_pass, $nd_db ) =
( "127.0.0.1", "****mysql_login****", "***password***", "****nodeny_database_name*****" );
my $nddb = DBI->connect( join( ":", "DBI", "mysql", $nd_db, $nd_host ),
$nd_login, $nd_pass )
or die $DBI::errstr;
#здесь указываем номера груп и пакетов
my $sql = "SELECT id FROM users WHERE grp IN (2) AND paket=30 OR paket=31 OR paket=32 OR paket=33 OR paket=12 OR paket=13 OR paket=14 OR paket=15 OR paket=20 OR paket=21 OR paket=2 OR paket=99;";
my $sth = $nddb->prepare($sql);
$sth->execute;
while (my @row = $sth->fetchrow_array)
{
$sql = "INSERT INTO pays SET "
. "mid= @row ,"
. "cash=0,"
. "time=UNIX_TIMESTAMP(now()),"
. "admin_id=1,"
. "admin_ip=0,"
. "office = 0,"
. "reason = '',"
. "coment = ' *****Текст сообщения**** ',"
. "bonus = '',"
. "type = 30,"
. "category ='490';";
my $nquery = $nddb->prepare($sql);
$nquery->execute;
$nquery->finish;
# print @row;
# print "a";
};
$sth->finish;
$nddb->disconnect();