ops. Were Perl5 used
the C inner loop, the TIL could have a tighter asm loop, or even direct
machine calls.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
that could reload itself, but without the -S and -I
commands the runtime environment is not fully reflected. And if running
under -T the enviornment is not trusted.)
Is there something there already?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL
ng is
an enabler.
I've seen code that actually looks at the value of $@
eval { ... }
$@ !~ //;
Why not make it simpler
eval { }
$@ !~ any( ); # Damian's Superpositions.
string, locks away any possiblities
of adjusting the text of the message or even making the error string
localizable.
Consider allowing perl to emit error messages in French, Latin, or
Klingon without breaking the code.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
is.
Issuing a unique error id for non-core modules will be a nightmare.
And I don't think we want to start up a IANA.
The $@->facility, $@->id pair could be considered unique for non-core
errors.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
yles having tristate logic and NULL propogation
would make some programming task a bit more straightforward.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
that perl can
use it correctly.
binary integers stay integers
if they are in the wrong endiness the bits get flipped properly.
un so weiter.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
7;t want to do the monitoring, then some hook that is called
just after the header or before the first line, and just after the
last or before the footer.
I must of missed it but what is the mechanism to force a page break?
And is there a way of keeping a format emission either together or
to al
>>>>> "NT" == Nathan Torkington <[EMAIL PROTECTED]> writes:
NT> Chaim Frenkel writes:
>> I would like to have an undef returned.
NT> Ah, I see. You want subroutines to return undef if they're given it
NT> for any of their arguments. That&
s a good
GL> expenditure of the fast CPUs of today, as a tradeoff towards
GL> reliable processing. And maybe in Perl6 exception handling could
GL> be less expensive than it is (by comparison to error codes) in
GL> other languages? That's a quest
empty list. Adding all these
exceptions for non-exceptional and quite common scenerios is bothersome.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
r generator, and return a reference to the
generator allowing reseting or extraction of the next number via rand
=item rand EXPR, RANDGEN_REF
=item rand EXPR
=item rand
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
n core.
I thought he was asking for evaluating until nothing is left to interpolate.
Something akin to:
$x = eval "$x" while $x =~ /[$@]/;
But more intelligent.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
ariables? Point the format at which variable(s) to watch
range => qw(name other)
footer => "$From{name} - $To{name}";
Would it be worthwhile to have a quick and dirty way of having the
formatter determine the max width and then allow the head
27;@') would then
be able to see the raw arguments.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "JP" == John Porter <[EMAIL PROTECTED]> writes:
JP> Chaim Frenkel wrote:
>>
>> Removing -1 as a valid result, could be a breakage (if someone is
>> doing something weird with a negative result)
JP> What, like using it as an index i
>>>>> "NT" == Nathan Torkington <[EMAIL PROTECTED]> writes:
NT> Chaim Frenkel writes:
>> Somehow I find
>> if (40 == ($foo = substr($bar, index($bar, 'xyz' {
>> }
NT> I don't understand your hypothetical code. substr()
(40 == substr($bar, $offset))) {
}
I use this style of safe failure when working in SQL.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
$foo = "flabergasted";
substr($foo, index($foo, 'abc'), 20); # Returns undef
If this is too much breakage what about only if it is the argument?
$foo = "flabergasted";
$x = index($foo, 'abc');
substr($foo, $x, 20); # s
the values will
be done?
Is this "@hash{@keys};" valid?
Would it be possible to make push(%hash, @keys) work? Doesn't look likely
is @keys the keys, the values, or both?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
t I need would be
a win for me.
Time for another missive in language design of why pop and push,
shift and unshift are in, but union and intersection are not.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
f using the wrong data structure all
TC> along -- that is, an array.
But a Hash isn't the correct data structure either. It just has some,
of the correct properties.
Perhaps we should add a Set to the toolkit. Basically a hash with
only the keys, no other baggage.
But you still would argue ag
.) can be chucked all I would need is
the key management part. Which could probably be boiled down to
converting the hash key into a bit.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
pplication.
Tiny minority? I'm no mathematician, but I've used set operations to
avoid redoing known work. And I've used hashes simply because I have
no other 'lazy' choice. But the code becomes harder to read.
>From a conceptual level, when looking at the code (not t
h have to go through the same amount of work ("work is conserved")
but one is more efficient in terms of the user's brainpower.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "AS" == Ariel Scolnicov <[EMAIL PROTECTED]> writes:
AS> Chaim Frenkel <[EMAIL PROTECTED]> writes:
>> yield EXPR - stop what I am doing now and give something else a
>> a chance to do its things. And while you are doing
>> that pl
brace could be one of many things.
Does the prototype help guide the decision that it is a block and not
an anon-hash?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "BL" == Bart Lateur <[EMAIL PROTECTED]> writes:
BL> On 10 Sep 2000 00:33:43 -0400, Chaim Frenkel wrote:
>> I view it as a mis-feature.
BL> I'm sorry to disagree. But flattening of argument lists is one of those
BL> things that make Perl,
a
regex operation, one or the other wouldn't have to be populated.)
Thoughts?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
in general when doing line at a time filter
processing.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
ith
my Set (@a, @b, @c);# Is the type distributive?
@c = @a - @b;
@c = @a + @b;
@c = @a * @b; # cross product ?
I'm not understaning your position. I could have used such an operation
rather than rolling my own. And a module w
e overloaded
to work with lazy lists, continuations, and short-circuiting.
yield EXPR - stop what I am doing now and give something else a
a chance to do its things. And while you are doing
that please take this EXPR from me.
--
Chaim Frenkel
accept the element it
DC> was filtering:
Why not spell it 'yield'?
It seems to have all the right connotations.
A sort of soft return. Gives of itself. Very polite.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
ested that a while ago, but Randal shot it down.
Something about the block not being a loop, I think.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
27; that can have itself
configure.
Yes, one could do it in the shell/program, but a simple 'standard'
method might be worthwhile.
use perlrc qw(:system :user);
Though the range of options and settings are probably so vast that
a single module capable of handling all scenerios would be so
rect map than the twiddling with hashes.
How are you drawing the line. Where does giving the user more power
than a turing machine stop.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
ere PerlLIO_chmod is defined as chmod on most righteous systems. So it
PS> would be a matter of squirreling away the errno for each bad result.
PS> I just can't get over the result in the successful case being an empty
PS> list, though. And conversely. Maybe this isn't itching enough to be worth
PS> scratching this hard, but it seemed like a good direction :-( Anyone got
PS> any brilliant ideas before I withdraw it?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "DC" == Damian Conway <[EMAIL PROTECTED]> writes:
>> my_while { pred() } { # don't gimme no Tcl flac.
>> ...
>> } # no semicolon needed here!
DC> Just added to the RFC :-)
How would the parser handle this
/merge/whatever is used.
Or
for ($x,$y,$z) ( (@x,@y,@z) )
an extra set of parenthesis could do the flattening. (only one list
is 'visible' as the argument to the for.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "GL" == Glenn Linderman <[EMAIL PROTECTED]> writes:
GL> Chaim Frenkel wrote:
>> ($foo, $baz, @bar) = (1,(2,3),4) # $foo = 1 $baz=2, @bar=(3,4)
>>
>> Actually, looking at it like that makes it an ugly situation. The 'new'
>&g
a LIST via @_.
NT> The hash functions are prototyped as \%, meaning they are passed a
NT> reference to the hash named as an argument. The reference-taking:
NT> * permits them to change the data structures
NT> * is faster (one value, not all the key/value pairs)
What if keys wer
down. I can't
remember the reason offered. (Speed?)
I can see a possible issue
print <
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "NT" == Nathan Torkington <[EMAIL PROTECTED]> writes:
>> > * Using an array of "words" as an alternate list as part of a regex
>> /match any of (${\join'|',@list}) here/
NT> $" = "|"; /@lis
ecause I *have* to ignore
DC> them or my brain is going to melt.
Unless I missed them. Did you leave pointers to the literature?
Dan and the rest of the -internals folks will need them.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED]
a "type definition") of a block of memory, which
PRL> is called a "struct." (rather than a "pseudohash" which is something
PRL> that acts very similar but has a different internal representation.)
PRL> Or we could use the C ke
or should we stand on our own two feet?
Strange thought just crossed my mind.
Would having a time object that is understood by perl be sufficient?
It would smell and taste like an integer but would otherwise be
magical.
--
Chaim Frenkel
t;>) {
(<{proc_arg1}, <{proc_arg2}) = split;
}
Damian, You have coroutines/generators out there. What about a data sink?
Anything you have currently proposed that would do this neatly.
--
Chaim FrenkelNonlin
>>>>> "DS" == Dan Sugalski <[EMAIL PROTECTED]> writes:
DS> At 02:25 PM 8/24/00 -0400, Chaim Frenkel wrote:
>> But
>>
>> ($foo, $baz, @bar) = (1,(2,3),4) # $foo = 1 $baz=2, @bar=(3,4)
>>
>> Actually, looking at it like that makes
ectation would be to have it become
# $foo=1 $baz=2 @bar=(4)
*blech*, I'm glad that you're doing the thinking.
>>>>> "LW" == Larry Wall <[EMAIL PROTECTED]> writes:
LW> Chaim Frenkel writes:
LW> : LW> P.S. I thin
ar return an object ref in scalar
LW> context, as long as the object returned overloads itself to behave as
LW> arrays and hashes currently do in scalar context.
Isn't this an internals issue?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
s
it great. You think there is a better _approach_ then tell the author.
You are limited by what the author wrote.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
tant-ness in my mind is an attribute or modifer of the value
or perhaps of the container. It has no bearing on the scoping or type
of the value.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
/I had arbitrary ranges for array
indices.
Hmm, I feel an RFC coming on
my @arr :low(-32000) :high(+32000);
my @population :low(1900) :high(2039);
$population[1923] = 323000;
How about
my @population[1900:2039];
Looks funny though.
--
Chaim Frenkel
t Man", "they given you a number and
takin' way your name.
What was the name of the show? "Secret Agent"? And what came first
the song or the show?
What was the real theme song? The title song was never played during
t
ke the programer work. Are those tabs or spaces?
And it doesn't strip the leading whitespace.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "NT" == Nathan Torkington <[EMAIL PROTECTED]> writes:
NT> Chaim Frenkel writes:
>> [use wacky Unicode characters for new operators]
>> I can see that this would give problems for current editors and displays,
>> but by the time perl6 c
Perl <-> Perl cross system will break.
Perl <-> other program same system will break.
Pick your poison. I'd rather have cross system break. But if the
epoch were available then an adjustment could be made intellegently.
Thanks again.
That's a bit strong. All we are doing is filtering the garbage for Larry.
Larry may well be reading for flavour.
And you forgot Rule #2. Larry can always change his mind.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
rd.
The containing WG would report the results upward.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "CN" == Chris Nandor <[EMAIL PROTECTED]> writes:
CN> Can we please cut down on the traffic to perl-announce, maybe make it
CN> moderated? Thanks,
Perhaps, the esteemed Librarian could make the -announce a Bcc?
--
Chaim Frenkel
time perl6 comes out, perhaps the situation would be better.
(Now, if we add all that APL symbols ...)
Thoughts?
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
nd you, the instantaneous time is correct. But
calculating backwards to what the instantaneous time would have been,
or calculating what the instanataneous time will be will not work.
But your blurb would be a lie. How would one ensure the correct
difference to the TAI? And what would be the tr
I.e. $STDOUT should always mean one and only one file at a time.
Unless one wants to have a $DEFAULT filehandle and get rid of single
arg select.
>>>>> "JSD" == Jonathan Scott Duff <[EMAIL PROTECTED]> writes:
JSD> On Tue, Aug 15, 2000 at 06:53:30PM -0400, Chai
>>>>> "MC" == Mark Cogan <[EMAIL PROTECTED]> writes:
>> is equivalent to
>>
>> @a = (\$a, \$b, \$c);
>>
>> rather than what you wrote.
MC> Ah, so it is. I'd argue that that's broken and should be handled with map
MC&g
MC> elements is an intuitive one, and having array iteration magically happen
MC> when you're not looking is dangerous.
Not unless you are coming from a math background or are an old basic
programmer, and would like to have matrix operations built in.
--
Chaim Frenkel
defined $newval; # rvalue context
BB> # lvalue context
BB> # verify new foo is in correct range
BB> return $self{foo} if $$newval < $MINFOO;
BB> return $self{foo} if $$newval > $MAXFOO;
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL
will have to implement it anyway.
The only other choice would be to start a -environment (or some such)
list, but I don't think there will be that much traffic.
Actually, it might be appropriate for horos(?) complaint list.
(How's that coming along?)
--
Chaim Frenkel
A> them" and by and large that works. It means your system clock drifts a
RA> little over time and then gets corrected back by xntpd or something, but
RA> in practice time on a Unix clock is monotonic.
Hmm, that means, some seconds were really 2x as long as others.
--
Chaim Frenke
ly short:
BB> Into the future: to next December 31st or June 30th, whichever is
BB> closer.
BB> Into the past : to past January 1st or July 1st, whichever is
BB> closer.
Sorry, this makes no sense.
BB> Leap-seconds are a PITA for generic time routines.
Why?
>>>>> "NT" == Nathan Torkington <[EMAIL PROTECTED]> writes:
NT> Chaim Frenkel writes:
>> Why? What is the gain? Perl only runs on the local machine.
NT> Epoch seconds are a convenient representation for dates and times.
NT> Varying epochs make it
(@result = @a) or (@result = @b);
>>
>> That's what all my students keep expecting it to mean.
MC> Seconded.
MC> It seems obvious that @a should be the whole array @a, not an iteration
MC> over its elements. If I want to iterate over @a, I should
be uninitialized.
I don't know if it is still true. But at one point in perl's life
defined(@arr) was false before anything was assigned to the array.
At this point this is highly frowned upon.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAI
to the UNIX
PRL> epoch, while others use their own epochs (MacPerl uses 1904, for
PRL> example).
PRL> All versions of Perl on all platforms should maintain time both
PRL> internally and externally as seconds since the UNIX epoch (00:00:00 01
PRL> Jan 1970 UTC).
--
Chaim Frenkel
zer for the corresponding per-filehandle value.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
d also to STDOUT?
select(OTHERFH);
print "This goest to OTHERFH\n";
print STDOOUT "This went to STDOUT\n";
STDOUT is _not_ the default filehandle. It is the currently selected
filehandle when perl starts.
--
Chaim Frenkel
o distribute portable time and date calcuations, as
part of the core, we will have to live with whatever the system
libraries give us.
(I don't want to think about Leap Seconds just yet.)
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED]
, isn't "reshape" the name of the APL operation?
Hmm, reshape is its own inverse.
I'll go for that as the name of the operation.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
> including:
PRL>1. The ability to do date arithmetic with simple math ops
PRL>2. It can be used to easily derive many other sources,
PRL> including UTC and local time
PRL>3. It is platform and even computer-independent
--
Chaim Frenkel
>>>>> "NW" == Nathan Wiger <[EMAIL PROTECTED]> writes:
NW> Also, how about just $@->id? Shorter and I would argue the "unique_" is
NW> really redundant (id's are usually unique, hence the name
NW> "identifiers").
Not rea
RL> http://dev.perl.org/rfc/
PRL> =head1 TITLE
PRL> Rename @ARGV to @ARGS
PRL> =head1 VERSION
PRL>Maintainer: Nathan Wiger <[EMAIL PROTECTED]>
PRL>Date: 11 Aug 2000
PRL>Version: 1
PRL>Status: Developing
PRL>Mailing List: [EMAIL PROTECTED]
ven't used OO in anger. But for me polymorphism is action-at-distance
of the worst stripe.
Its the cheap and dirty way of doing OO. Let the object determine the
calling convention for the method. I see very little reason to have
two methods with different signatures.
--
Chaim Frenkel
>>>>> "DS" == Dan Sugalski <[EMAIL PROTECTED]> writes:
DS> At 10:58 AM 8/11/00 -0400, Chaim Frenkel wrote:
>> Someone on this list (TomC?) has supplied a major diatribe against const.
DS> Maybe, but I don't see what's wrong with:
DS> m
er else was going
PC> on and restore any invariants.
Err, how does one differentiate between a 'good' entry and a 'bad' entry.
PC> Note too that we don't need to do any case based magic, we can and
PC> should use polymorphism for that.
Why? Just because?
--
Cha
>>>>> "GB" == Graham Barr <[EMAIL PROTECTED]> writes:
GB> On Thu, Aug 10, 2000 at 07:22:21PM -0400, Chaim Frenkel wrote:
>> Okay, then for
>>
>> reduce &avg $identity, @list
>>
>> What should $identity be?
GB> I would like
ecify types and attributes within a sub
JH> prototype? It would be nice to guarantee that subs don't mutate particular
JH> parameters, that certain data will not be aliased, etc, so that appropriate
JH> optimisations can be done.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
.4567"
AS>(_not_ 123.4567) represents error 4567. People will still try
AS>stupid floating-point math tricks to get at the suberror code, but
AS>at least we'll know they didn't read the bit in the documentation
AS>where it will specifically warn _not_ to
nguages, as you have done above. I just found the
PS> try/throw/catch syntax really appealing, and it was a bonus that
PS> it would be instantly familiar to the C++/Java crowd.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
tions welcome.
PS> I made a start in RFC 80.
Have you looked at the current scheme used by lexical warnings?
Hmm, I thought I saw another exception RFC pass by. . Yup,
RFC 88, Tony Olekshy <[EMAIL PROTECTED]>
Could you two folks get together and hash this out.
(I think Graham's
ld be used on a pair reference:
>>
>> print key $array[0];# or perhaps: print keys $array[0];
JE> ^^^ Makes sense Mismatch ^ ^
>> print value $array[0]; # or perhaps: print value $array[0];
JE>
troduce
PRL> two new built-ins -- C and C -- to access the components of a pair.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
rom (for + and *, you'll usually
AS> pick an appropriate identity element). By writing
AS> @sum = reduce __+__ 0, @numbers
AS> you deal elegantly with both cases.
AS> NOTE: I find this trick very elegant. I wish it were my trick,
AS> instead of Damian's...
it does now.
Hmm, would it be too nasty for perl to recognize that all foo's have the
same prototype? (Consider the singular foo case.)
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
>>>>> "GB" == Graham Barr <[EMAIL PROTECTED]> writes:
GB> On Thu, Aug 10, 2000 at 04:34:50PM -0400, Chaim Frenkel wrote:
>> Nice.
>>
>> The continue clause, I assume would re-raise an uncaught exception.
>> But, a big but. How does th
plicitly tucks it into a variable
BT> whose name starts with main::. E.g. let Net/FTP.pm post its debug
BT> flag into $main::Net::FTP::Debug, and the list of exception classes
BT> requested of Fatal.pm could be posted into @main::Fatal.
--
Chaim Fre
case __->isa('IO') { ... }
GB> case __->isa('Socket') { ... }
GB> else { ... }
GB> }
GB> }
GB> continue {
GB> # code always executed (ie finally)
GB> }
GB> And th
ontext (for things to make sense).
Why? reduce should be able to reduce a set of matrices to a matrix. Or
actually any aggregate (plural whatzit).
I think this is too limiting.
Depending upon the context reduce should return undef, an empty list,
or other empty plural whatzit.
--
Chaim
; instead of "otherwise",
JP> because sometimes you'll do this:
JP> try {
JP> # fragile code
JP> }
JP> catch {
JP> # handle other exceptions
JP> };
JP> And it would look silly to use "otherwise" there.
DC> sub enervate (?$) : lvalue { $_[0] }
DC> And then:
DC> non_lazy( a(), enervate(b()), c() );
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
it be available to both? (and of course the opposite
eval{}, to make it evaluate the arguments immediately.)
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
$token = Perl::Lexer($TDIN)->next_token
or
$line = <$TDIN>;
$line = s/frobitz/knob/g;
$token = Perl::Lexer->push($line);
We can get real dirty here.
--
Chaim FrenkelNonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183
1 - 100 of 175 matches
Mail list logo