[SP-pm] XML::Simple

Daniel de Oliveira Mantovani daniel.oliveira.mantovani at gmail.com
Fri Dec 4 10:04:42 PST 2009


2009/12/4 Marcio Mello <marcio em modapoint.com.br>:
> Daniel,
> Testei como está abaixo:
>
> my $response = $userAgent->request($request);
>  #
>  # Parseando o resultado (XML) do servidor
>  #
>  my $xml = XML::Simple->new();
>  my $itens = $xml->XMLin($response->content);
>
> if($response->code == 200) { <---- Você continua verificando o motor do carro depois de usa-lo.
> foreach my $want (@{ $itens->{'userTransactions'} }) {
>   print $want->{'startTime'} . "\n";
> }
> print Dumper($xml);
> } else {
> print $response->error_as_HTML;
> };
>
> A resposta foi apenas:
> $VAR1 = bless( {
>                'def_opt' => {},
>                'opt' => {
>                           'normalisespace' => 0,
>                           'rootname' => 'opt',
>                           'parseropts' => [],
>                           'keyattr' => [
>                                          'name',
>                                          'key',
>                                          'id'
>                                        ],
>                           'forcearray' => 0,
>                           'contentkey' => 'content',
>                           'searchpath' => []
>                         }
>              }, 'XML::Simple' );
>
> Não entendi ...
> Marcio.
> ----- Original Message ----- From: "Daniel de Oliveira Mantovani"
> <daniel.oliveira.mantovani em gmail.com>
> To: <saopaulo-pm em mail.pm.org>
> Sent: Friday, December 04, 2009 3:29 PM
> Subject: Re: [SP-pm] XML::Simple
>
>
> Ops esqueci do my:
> *my $itens = $xml->XMLin($content);*
>
> 2009/12/4 Daniel de Oliveira Mantovani
> <daniel.oliveira.mantovani em gmail.com>:
>>
>> my $xml = XML::Simple->new();
>> $itens = $xml->XMLin($content);
>>
>> foreach my $want (@{ $itens->{'userTransactions'} }) {
>> print $want->{'startTime'} . "\n";
>> ....
>> }
>>
>> Eu não testei o código.
>>
>> 2009/12/4 Marcio Mello <marcio em modapoint.com.br>:
>>>
>>> Daniel,
>>> Já olhei manuais e exemplos e ainda parece grego prá mim..
>>> Aqui está o XML... veja se tem alguma sugestão.. obrigado.
>>> O que preciso é startTime, ANI, DestinationNumber,
>>> transactionDescription,
>>> Time a Cost para montar um relatório em uma tabela.
>>>
>>> $VAR1 = {
>>> 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
>>> 'soap:Body' => {
>>> 'getUserTransactionsResponse' => {
>>> 'xmlns' => 'vscws',
>>>
>>> 'getUserTransactionsResult' => {
>>>
>>> 'VSC' => {
>>>
>>> 'xmlns' => '',
>>>
>>> 'userTransactions' => [
>>>
>>> {
>>>
>>> 'Time' => '1:00',
>>>
>>> 'Limit' => '5',
>>>
>>> 'DNIS' => '56012',
>>>
>>> 'destinationDescription' =>
>>> "Brasil - S\x{e3}o Paulo - \x{c1}rea 11 - Celular",
>>>
>>> 'Income' => '0.0000',
>>>
>>> 'controlNumber' => '2414568',
>>>
>>> 'ANI' => '1145822125',
>>>
>>> 'DestinationNumber' =>
>>> '551199117099',
>>>
>>> 'Balance' => '-44.024',
>>>
>>> 'startTime' => '2009-11-27
>>> 17:28:45',
>>>
>>> 'Cost' => '0.89',
>>>
>>> 'transactionDescription' =>
>>> 'Termination',
>>>
>>> 'billing' => 'Limited',
>>>
>>> 'RealTime' => '0:22'
>>>
>>> },
>>>
>>> {
>>>
>>> 'Time' => '1:00',
>>>
>>> 'Limit' => '5',
>>>
>>> 'DNIS' => '56012',
>>>
>>> 'destinationDescription' =>
>>> 'Brasil - Roc',
>>>
>>> 'Income' => '0.0000',
>>>
>>> 'controlNumber' => '2414568',
>>>
>>> 'ANI' => '1145822125',
>>>
>>> 'DestinationNumber' =>
>>> '551145215888',
>>>
>>> 'Balance' => '-44.314',
>>>
>>> 'startTime' => '2009-11-27
>>> 17:25:45',
>>>
>>> 'Cost' => '0.29',
>>>
>>> 'transactionDescription' =>
>>> 'Termination',
>>>
>>> 'billing' => 'Limited',
>>>
>>> 'RealTime' => '0:19'
>>>
>>> },
>>>
>>> ............. etc ....
>>>
>>> Marcio Mello.
>>>
>>> ----- Original Message ----- From: "Daniel de Oliveira Mantovani"
>>> <daniel.oliveira.mantovani em gmail.com>
>>> To: <saopaulo-pm em mail.pm.org>
>>> Sent: Friday, December 04, 2009 2:38 PM
>>> Subject: Re: [SP-pm] XML::Simple
>>>
>>>
>>> Só para esclarecer, você tem de retorno um XML, você precisa de
>>> algumas informações desse XML mas não consegue pois está com dúvida de
>>> como usar o XML::Simple, certo ?
>>>
>>> Se for esse o seu problema, o manual explica direitinho. Olha só um
>>> trecho
>>> dele:
>>> <manual>
>>> For example, this XML:
>>>
>>> <opt>
>>> <user login="grep" fullname="Gary R Epstein" />
>>> <user login="stty" fullname="Simon T Tyson" />
>>> </opt>
>>>
>>> would, by default, parse to this:
>>>
>>> {
>>> 'user' => [
>>> {
>>> 'login' => 'grep',
>>> 'fullname' => 'Gary R Epstein'
>>> },
>>> {
>>> 'login' => 'stty',
>>> 'fullname' => 'Simon T Tyson'
>>> }
>>> ]
>>> }
>>> </manual>
>>>
>>>
>>> http://search.cpan.org/~grantm/XML-Simple-2.18/lib/XML/Simple.pm
>>>
>>> Mesmo assim se você não conseguir fazer o parser, cola o XML aqui que
>>> nós te ajudamos.
>>>
>>> []'s
>>>
>>> 2009/12/4 Marcio Mello <marcio em modapoint.com.br>:
>>>>
>>>> A resposta contém:
>>>> startTime, ANI, DestinationNumber, destinationDescription, Time e Cost
>>>> .
>>>> Existem outros dados mas não são importantes.
>>>>
>>>> São várias linhas com estes dados e preciso mostrar em uma tabela, que
>>>> no
>>>> código tentei colocar em $tabelaprint .
>>>>
>>>> Marcio Mello.
>>>>
>>>> ----- Original Message ----- From: "Daniel de Oliveira Mantovani"
>>>> <daniel.oliveira.mantovani em gmail.com>
>>>> To: <saopaulo-pm em mail.pm.org>
>>>> Sent: Friday, December 04, 2009 1:54 PM
>>>> Subject: Re: [SP-pm] XML::Simple
>>>>
>>>>
>>>> Explica o que você quer fazer, não o que você está tentando fazer com o
>>>> código.
>>>>
>>>> 2009/12/4 Lindolfo "Lorn" Rodrigues <lorn.br em gmail.com>:
>>>>>
>>>>> You are doing it wrong.
>>>>> Não é porque SOAP retorna um XML que você tem que "parsear" a resposta
>>>>> dele
>>>>> com o XML::Simple :P
>>>>> Dê uma olhada no
>>>>> http://search.cpan.org/~berle/SOAP-Simple-0.00_03/lib/SOAP/Simple.pm se
>>>>> não
>>>>> funcionar, vai ter que usar
>>>>> http://search.cpan.org/~mkutter/SOAP-Lite-0.710.10/lib/SOAP/Lite.pm o
>>>>> SOAP::Lite tem uma pasta 'example' junto com o fonte que ajuda bastante
>>>>>
>>>>> 2009/12/4 Marcio Mello <marcio em modapoint.com.br>
>>>>>>
>>>>>> Olá à todos,
>>>>>> Não conheço bem o módulo XML::Simple e não sei como traduzir os dados
>>>>>> corretamente.
>>>>>> Se alguém puder ajudar, fico grato..
>>>>>>
>>>>>> A resposta que recebo do servidor está aqui e o código está abaixo:
>>>>>>
>>>>>> ===========================================================
>>>>>> $VAR1 = { 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
>>>>>> 'soap:Body' => { 'getUserTransactionsResponse' => { 'xmlns' =>
>>>>>> 'vscws',
>>>>>> 'getUserTransactionsResult' => { 'VSC' => { 'xmlns' => '',
>>>>>> 'userTransactions' => [ { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =>
>>>>>> '56012', 'destinationDescription' => "Brasil - S\x{e3}o Paulo -
>>>>>> \x{c1}rea
>>>>>> 11
>>>>>> - Celular", 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI'
>>>>>> =>
>>>>>> '1145822125', 'DestinationNumber' => '551199117099', 'Balance' =>
>>>>>> '-44.024',
>>>>>> 'startTime' => '2009-11-27 17:28:45', 'Cost' => '0.89',
>>>>>> 'transactionDescription' => 'Termination', 'billing' => 'Limited',
>>>>>> 'RealTime' => '0:22' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =>
>>>>>> '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' =>
>>>>>> '0.0000',
>>>>>> 'controlNumber' => '2414568', 'ANI' => '1145822125',
>>>>>> 'DestinationNumber'
>>>>>> =>
>>>>>> '551145215888', 'Balance' => '-44.314', 'startTime' => '2009-11-27
>>>>>> 17:25:45', 'Cost' => '0.29', 'transactionDescription' =>
>>>>>> 'Termination',
>>>>>> 'billing' => 'Limited', 'RealTime' => '0:19' }, { 'Time' => '1:00',
>>>>>> 'Limit'
>>>>>> => '5', 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc',
>>>>>> 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI' =>
>>>>>> '1145822125',
>>>>>> 'DestinationNumber' => '551145215888', 'Balance' => '-44.604',
>>>>>> 'startTime'
>>>>>> => '2009-11-27 17:16:30', 'Cost' => '0.29', 'transactionDescription'
>>>>>> =>
>>>>>> 'Termination', 'billing' => 'Limited', 'RealTime' => '0:24' }, {
>>>>>> 'Time'
>>>>>> =>
>>>>>> '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' =>
>>>>>> 'Brasil -', 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI'
>>>>>> =>
>>>>>> '1145822125', 'DestinationNumber' => '551164545504', 'Balance' =>
>>>>>> '-45.494',
>>>>>> 'startTime' => '2009-11-27 17:06:44', 'Cost' => '0.89',
>>>>>> 'transactionDescription' => 'Termination', 'billing' => 'Limited',
>>>>>> 'RealTime' => '0:12' }, { 'Time' => '1:48', 'Limit' => '5', 'DNIS' =>
>>>>>> '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' =>
>>>>>> '0.0000',
>>>>>> 'controlNumber' => '2414568', 'ANI' => '1130337016',
>>>>>> 'DestinationNumber'
>>>>>> =>
>>>>>> '551130337005', 'Balance' => '-46.016', 'startTime' => '2009-11-27
>>>>>> 12:19:22', 'Cost' => '0.522', 'transactionDescription' =>
>>>>>> 'Termination',
>>>>>> 'billing' => 'Limited', 'RealTime' => '1:43' }, { 'Time' => '1:00',
>>>>>> 'Limit'
>>>>>> => '5', 'DNIS' => '56012', 'destinationDescription' => "Brasil -
>>>>>> S\x{e3}o
>>>>>> Paulo - \x{c1}rea 11 - Celular", 'Income' => '0.0000', 'controlNumber'
>>>>>> =>
>>>>>> '2414568', 'ANI' => '1130337016', 'DestinationNumber' =>
>>>>>> '551199117099',
>>>>>> 'Balance' => '-46.906', 'startTime' => '2009-11-27 12:20:28', 'Cost'
>>>>>> =>
>>>>>> '0.89', 'transactionDescription' => 'Termination', 'billing' =>
>>>>>> 'Limited',
>>>>>> 'RealTime' => '0:13' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =>
>>>>>> '56012', 'destinationDescription' => "Brasil - S\x{e3}o Paulo -
>>>>>> \x{c1}rea
>>>>>> 11
>>>>>> - Celular", 'Income' => '0.0000', 'controlNumber' => '2414568', 'ANI'
>>>>>> =>
>>>>>> '1130337016', 'DestinationNumber' => '551199117099', 'Balance' =>
>>>>>> '-47.796',
>>>>>> 'startTime' => '2009-11-27 12:07:35', 'Cost' => '0.89',
>>>>>> 'transactionDescription' => 'Termination', 'billing' => 'Limited',
>>>>>> 'RealTime' => '0:20' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =>
>>>>>> '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' =>
>>>>>> '0.0000',
>>>>>> 'controlNumber' => '2414568', 'ANI' => '1130337016',
>>>>>> 'DestinationNumber'
>>>>>> =>
>>>>>> '551130337005', 'Balance' => '-48.086', 'startTime' => '2009-11-27
>>>>>> 12:06:08', 'Cost' => '0.29', 'transactionDescription' =>
>>>>>> 'Termination',
>>>>>> 'billing' => 'Limited', 'RealTime' => '0:21' }, { 'Time' => '0:00',
>>>>>> 'Limit'
>>>>>> => '5', 'DNIS' => {}, 'destinationDescription' => {}, 'Income' =>
>>>>>> '50',
>>>>>> 'controlNumber' => '2414568', 'ANI' => {}, 'DestinationNumber' => {},
>>>>>> 'Balance' => '1.914', 'startTime' => '2009-11-26 18:05:36', 'Cost' =>
>>>>>> '0.0000', 'transactionDescription' => 'Payment', 'billing' =>
>>>>>> 'Limited',
>>>>>> 'RealTime' => '0:00' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =>
>>>>>> '30338031', 'destinationDescription' => 'Brasil - Roc', 'Income' =>
>>>>>> '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125',
>>>>>> 'DestinationNumber' => '551145215888', 'Balance' => '1.624',
>>>>>> 'startTime'
>>>>>> =>
>>>>>> '2009-11-25 18:11:25', 'Cost' => '0.29', 'transactionDescription' =>
>>>>>> 'Termination', 'billing' => 'Limited', 'RealTime' => '0:47' }, {
>>>>>> 'Time'
>>>>>> =>
>>>>>> '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' =>
>>>>>> 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568',
>>>>>> 'ANI'
>>>>>> =>
>>>>>> '1145822125', 'DestinationNumber' => '551155478001', 'Balance' =>
>>>>>> '1.334',
>>>>>> 'startTime' => '2009-11-25 11:55:47', 'Cost' => '0.29',
>>>>>> 'transactionDescription' => 'Termination', 'billing' => 'Limited',
>>>>>> 'RealTime' => '0:09' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =>
>>>>>> '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' =>
>>>>>> '0.0000',
>>>>>> 'controlNumber' => '2414568', 'ANI' => '1145822125',
>>>>>> 'DestinationNumber'
>>>>>> =>
>>>>>> '551140040435', 'Balance' => '1.044', 'startTime' => '2009-11-25
>>>>>> 11:48:00',
>>>>>> 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing'
>>>>>> =>
>>>>>> 'Limited', 'RealTime' => '0:07' }, { 'Time' => '1:36', 'Limit' => '5',
>>>>>> 'DNIS' => '56012', 'destinationDescription' => 'Brasil - Roc',
>>>>>> 'Income'
>>>>>> =>
>>>>>> '0.0000', 'controlNumber' => '2414568', 'ANI' => '1145822125',
>>>>>> 'DestinationNumber' => '551140040435', 'Balance' => '0.58',
>>>>>> 'startTime'
>>>>>> =>
>>>>>> '2009-11-25 11:09:02', 'Cost' => '0.464', 'transactionDescription' =>
>>>>>> 'Termination', 'billing' => 'Limited', 'RealTime' => '1:31' }, {
>>>>>> 'Time'
>>>>>> =>
>>>>>> '1:00', 'Limit' => '5', 'DNIS' => '56012', 'destinationDescription' =>
>>>>>> 'Brasil - Roc', 'Income' => '0.0000', 'controlNumber' => '2414568',
>>>>>> 'ANI'
>>>>>> =>
>>>>>> '1145822125', 'DestinationNumber' => '551138330767', 'Balance' =>
>>>>>> '0.29',
>>>>>> 'startTime' => '2009-11-25 10:11:35', 'Cost' => '0.29',
>>>>>> 'transactionDescription' => 'Termination', 'billing' => 'Limited',
>>>>>> 'RealTime' => '0:47' }, { 'Time' => '1:00', 'Limit' => '5', 'DNIS' =>
>>>>>> '56012', 'destinationDescription' => 'Brasil - Roc', 'Income' =>
>>>>>> '0.0000',
>>>>>> 'controlNumber' => '2414568', 'ANI' => '1145822125',
>>>>>> 'DestinationNumber'
>>>>>> =>
>>>>>> '551138330767', 'Balance' => '0.0000', 'startTime' => '2009-11-25
>>>>>> 09:50:25',
>>>>>> 'Cost' => '0.29', 'transactionDescription' => 'Termination', 'billing'
>>>>>> =>
>>>>>> 'Limited', 'RealTime' => '0:52' } ], 'Val' => { 'UserID' => '2414568'
>>>>>> },
>>>>>> 'STATUS' => '0' } } } }, 'xmlns:xsd' =>
>>>>>> 'http://www.w3.org/2001/XMLSchema',
>>>>>> 'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/' };
>>>>>> =====================================================================
>>>>>>
>>>>>> use LWP::UserAgent;
>>>>>> use HTTP::Request;
>>>>>> use XML::Simple;
>>>>>> use Data::Dumper;
>>>>>>
>>>>>> my $message = '<?xml version="1.0" encoding="utf-8"?>
>>>>>> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>>>>> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
>>>>>> <soap:Header>
>>>>>> <AuthHeader xmlns="vscws">
>>>>>> <distriID>XXXX</distriID>
>>>>>> <password>XXXXXX</password>
>>>>>> </AuthHeader>
>>>>>> </soap:Header>
>>>>>> <soap:Body>
>>>>>> <getUserTransactions xmlns="vscws">
>>>>>> <controlNumber>XXXXXX</controlNumber>
>>>>>> <transactionType></transactionType>
>>>>>> <dateFrom>2009-11-10</dateFrom>
>>>>>> <dateTo>2009-11-30</dateTo>
>>>>>> </getUserTransactions>
>>>>>> </soap:Body>
>>>>>> </soap:Envelope>';
>>>>>>
>>>>>> my $length = length($message);
>>>>>>
>>>>>> my $userAgent = LWP::UserAgent->new();
>>>>>> my $request = HTTP::Request->new(POST =>
>>>>>> 'http://200.XXX.XXX.XX:90/ws.asmx');
>>>>>> $request->header(SOAPAction => '"vscws/getUserTransactions"');
>>>>>> $request->content_type("text/xml; charset=utf-8");
>>>>>> $request->content_length($length);
>>>>>> $request->content($message);
>>>>>>
>>>>>> my $response = $userAgent->request($request);
>>>>>>
>>>>>> #
>>>>>> # Parseando o resultado (XML) do servidor
>>>>>> #
>>>>>> my $ref = XMLin( $response->content ) or die $!;
>>>>>> my $xml = XMLout( my $hashref );
>>>>>>
>>>>>> for ( my $i = $#{ $ref->{getUserTransactions} }; $i > 0; $i-- ) {
>>>>>>
>>>>>> $startdate = "${ $ref->{getUserTransactions} }[$i]->{startTime}";
>>>>>> $origem = "${ $ref->{getUserTransactions} }[$i]->{ANI}";
>>>>>> $destino = "${ $ref->{getUserTransactions}
>>>>>> }[$i]->{DestinationNumber}";
>>>>>> $descrip = "${ $ref->{getUserTransactions}
>>>>>> }[$i]->{destinationDescription}";
>>>>>> $duration = "${ $ref->{getUserTransactions} }[$i]->{Time}";
>>>>>> $cost = "${ $ref->{getUserTransactions} }[$i]->{Cost}";
>>>>>>
>>>>>> $tabelaprint .= "
>>>>>> <tr>
>>>>>> <td><p align=\"center\"><font face=\"Arial\"
>>>>>> size=\"1\"><b>$startdate</b></font></td>
>>>>>> <td><p align=\"center\"><font face=\"Arial\"
>>>>>> size=\"1\">$origem</font></td>
>>>>>> <td><p align=\"center\"><font face=\"Arial\"
>>>>>> size=\"1\"><b>$destino</b></font></td>
>>>>>> <td><p align=\"center\"><font face=\"Arial\"
>>>>>> size=\"1\"><b>$descrip</b></font></td>
>>>>>> <td><p align=\"center\"><font face=\"Arial\"
>>>>>> size=\"1\">$duration</font></td>
>>>>>> <td><p align=\"center\"><font face=\"Arial\"
>>>>>> size=\"1\">$cost</font></td>
>>>>>> </tr>
>>>>>> ";
>>>>>> }
>>>>>>
>>>>>> if($response->code == 200) {
>>>>>> print "$tabelaprint";
>>>>>> }
>>>>>> else {
>>>>>> print $response->error_as_HTML;
>>>>>> };
>>>>>> Obrigado.
>>>>>> Marcio Mello.
>>>>>> marcio em modapoint.com.br
>>>>>> _______________________________________________
>>>>>> SaoPaulo-pm mailing list
>>>>>> SaoPaulo-pm em pm.org
>>>>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> lorn at lornlab dot org
>>>>> Lindolfo "Lorn" Rodrigues
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> SaoPaulo-pm mailing list
>>>>> SaoPaulo-pm em pm.org
>>>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Existe dois tipos de pessoas, as que reclamam a vida inteira do que
>>>> fazem, e as que fazem o que nasceram para fazer.
>>>> _______________________________________________
>>>> SaoPaulo-pm mailing list
>>>> SaoPaulo-pm em pm.org
>>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>>
>>>> _______________________________________________
>>>> SaoPaulo-pm mailing list
>>>> SaoPaulo-pm em pm.org
>>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>>
>>>
>>>
>>>
>>> --
>>> Existe dois tipos de pessoas, as que reclamam a vida inteira do que
>>> fazem, e as que fazem o que nasceram para fazer.
>>> _______________________________________________
>>> SaoPaulo-pm mailing list
>>> SaoPaulo-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>
>>> _______________________________________________
>>> SaoPaulo-pm mailing list
>>> SaoPaulo-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>
>>
>>
>>
>> --
>> Existe dois tipos de pessoas, as que reclamam a vida inteira do que
>> fazem, e as que fazem o que nasceram para fazer.
>>
>
>
>
> --
> Existe dois tipos de pessoas, as que reclamam a vida inteira do que
> fazem, e as que fazem o que nasceram para fazer.
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
Existe dois tipos de pessoas, as que reclamam a vida inteira do que
fazem, e as que fazem o que nasceram para fazer.


More information about the SaoPaulo-pm mailing list