So you pull up to a traffic light, and there he is, the "homeless" person begging for a hand-out.
You intuitively know it's a scam, but you worry that he really does need help. You either pull out a dollar or two and give it to him, wondering if you're contributing to drug/alcohol abuse, or you look the other way and rush through the light when it turns green, feeling guilty the whole time.
Here's a possible solution, although it would require several groups to cooperate.
A church could provide debit cards, in the denominations of $1, $2, $5, and $20. These cards could be used at participating grocery stores, Wal-Marts, filling stations, city utility/tax offices, the city's bus system, etc, but could not be used for cigarettes, alcohol, lottery tickets, etc.
These cards would then either be pre-sold or assigned to members of the public, and when you pull up next to a street beggar, you could give him one of these cards. If the card is pre-sold to you, then you'd need do nothing further. If the card is assigned, your bank account would be charged when the card is used. Any cards not used within 6 months would be considered a donation to the church's benevolence work.
(Lots of tweaks could be made to this plan, but this is the basic idea.)
Now you can give money to the beggar, knowing the money won't be used for "vice" products (I'm sure the beggars could trade/sell their cards, but it adds a level of difficulty to them to do so). And if the beggars in town get most of their donations via a card, they'll either use the cards as intended (or work around the system, unfortunately), or they would leave town to find one that donates cash instead of cards.
Would this plan (or something similar) work?