Home  |  Linux  | Mysql  | PHP  | XML
From:ondrej.hanak@ubs.com Date:Mon Jun 30 10:06:01 2008
Subject:DYNAMIC_FILE_UPLOAD & too many file handels open
Hi *,
At first thank you for great library!

I would like to report one problem with DYNAMIC_FILE_UPLOAD and propose
solution.
We use LWP for uploading files to HTTP server. The problem is that we
don't know how many files users could have.
Teoretically "many". ;-)

Becase we don't know even how big the files are, so we use
DYNAMIC_FILE_UPLOAD.
It perfectly works when there are just few files. Doesn't matter how big
they are, of course, DYNAMIC_FILE_UPLOAD works.

The problem arises when users have e.g. 400 small files.
At Solaris it leads to "Too many open handles" error message.
At Win XP it ends with crash.

I played around a little bit and prepare solution for us. Which seems to
be working nice here.
I'm quite new to Perl so maybe it is not the perfect solution, but I
would like to give an idea how I've solved this.

I've noticed that all files are open before they are even read. And
references to file handels are stored to be used/read later.
This is a little bit problem in our scenario. Because it leads to
openning of large number of file handels, which is not necessary at that
time.

So I changed the code to keep just names of the files first and
open/read them when needed at "upload routine".

Please find attached my altered Common.pm module. (sub form_data)

Best regards,
Ondrej Hanak


  <<Common.pm>> 

Attachment: [text/html]
------_=_NextPart_001_01C8DACB.311AA0FA Content-Type: application/octet-stream; name="Common.pm" Content-Transfer-Encoding: base64 Content-Description: Common.pm Content-Disposition: attachment; filename="Common.pm" IyAkSWQ6IENvbW1vbi5wbSx2IDEuMjMgMjAwNC8wNi8wMyAxMzozODo0MCBnaXNsZSBFeHAgJA0K Iw0KcGFja2FnZSBIVFRQOjpSZXF1ZXN0OjpDb21tb247DQoNCnVzZSBzdHJpY3Q7DQp1c2UgdmFy cyBxdyhARVhQT1JUIEBFWFBPUlRfT0sgJFZFUlNJT04gJERZTkFNSUNfRklMRV9VUExPQUQpOw0K DQokRFlOQU1JQ19GSUxFX1VQTE9BRCB8fD0gMDsgICMgbWFrZSBpdCBkZWZpbmVkIChkb24ndCBr bm93IHdoeSkNCg0KcmVxdWlyZSBFeHBvcnRlcjsNCippbXBvcnQgPSBcJkV4cG9ydGVyOjppbXBv cnQ7DQpARVhQT1JUID1xdyhHRVQgSEVBRCBQVVQgUE9TVCk7DQpARVhQT1JUX09LID0gcXcoJERZ TkFNSUNfRklMRV9VUExPQUQpOw0KDQpyZXF1aXJlIEhUVFA6OlJlcXVlc3Q7DQp1c2UgQ2FycCgp Ow0KDQokVkVSU0lPTiA9IHNwcmludGYoIiVkLiUwMmQiLCBxJFJldmlzaW9uOiAxLjIzICQgPX4g LyhcZCspXC4oXGQrKS8pOw0KDQpteSAkQ1JMRiA9ICJcMDE1XDAxMiI7ICAgIyAiXHJcbiIgaXMg bm90IHBvcnRhYmxlDQoNCnN1YiBHRVQgIHsgX3NpbXBsZV9yZXEoJ0dFVCcsICBAXyk7IH0NCnN1 YiBIRUFEIHsgX3NpbXBsZV9yZXEoJ0hFQUQnLCBAXyk7IH0NCnN1YiBQVVQgIHsgX3NpbXBsZV9y ZXEoJ1BVVCcgLCBAXyk7IH0NCg0Kc3ViIFBPU1QNCnsNCiAgICBteSAkdXJsID0gc2hpZnQ7DQog ICAgbXkgJHJlcSA9IEhUVFA6OlJlcXVlc3QtPm5ldyhQT1NUID0+ICR1cmwpOw0KICAgIG15ICRj b250ZW50Ow0KICAgICRjb250ZW50ID0gc2hpZnQgaWYgQF8gYW5kIHJlZiAkX1swXTsNCiAgICBt eSgkaywgJHYpOw0KICAgIHdoaWxlICgoJGssJHYpID0gc3BsaWNlKEBfLCAwLCAyKSkgew0KCWlm IChsYygkaykgZXEgJ2NvbnRlbnQnKSB7DQoJICAgICRjb250ZW50ID0gJHY7DQoJfQ0KCWVsc2Ug ew0KCSAgICAkcmVxLT5wdXNoX2hlYWRlcigkaywgJHYpOw0KCX0NCiAgICB9DQogICAgbXkgJGN0 ID0gJHJlcS0+aGVhZGVyKCdDb250ZW50LVR5cGUnKTsNCiAgICB1bmxlc3MgKCRjdCkgew0KCSRj dCA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOw0KICAgIH0NCiAgICBlbHNp ZiAoJGN0IGVxICdmb3JtLWRhdGEnKSB7DQoJJGN0ID0gJ211bHRpcGFydC9mb3JtLWRhdGEnOw0K ICAgIH0NCg0KICAgIGlmIChyZWYgJGNvbnRlbnQpIHsNCglpZiAoJGN0ID1+IG0sXm11bHRpcGFy dC9mb3JtLWRhdGFccyooO3wkKSxpKSB7DQoJICAgIHJlcXVpcmUgSFRUUDo6SGVhZGVyczo6VXRp bDsNCgkgICAgbXkgQHYgPSBIVFRQOjpIZWFkZXJzOjpVdGlsOjpzcGxpdF9oZWFkZXJfd29yZHMo JGN0KTsNCgkgICAgQ2FycDo6Y2FycCgiTXVsdGlwbGUgQ29udGVudC1UeXBlIGhlYWRlcnMiKSBp ZiBAdiA+IDE7DQoJICAgIEB2ID0gQHskdlswXX07DQoNCgkgICAgbXkgJGJvdW5kYXJ5Ow0KCSAg ICBteSAkYm91bmRhcnlfaW5kZXg7DQoJICAgIGZvciAobXkgQHRtcCA9IEB2OyBAdG1wOykgew0K CQlteSgkaywgJHYpID0gc3BsaWNlKEB0bXAsIDAsIDIpOw0KCQlpZiAobGMoJGspIGVxICJib3Vu ZGFyeSIpIHsNCgkJICAgICRib3VuZGFyeSA9ICR2Ow0KCQkgICAgJGJvdW5kYXJ5X2luZGV4ID0g QHYgLSBAdG1wIC0gMTsNCgkJICAgIGxhc3Q7DQoJCX0NCgkgICAgfQ0KDQoJICAgICgkY29udGVu dCwgJGJvdW5kYXJ5KSA9IGZvcm1fZGF0YSgkY29udGVudCwgJGJvdW5kYXJ5LCAkcmVxKTsNCg0K CSAgICBpZiAoJGJvdW5kYXJ5X2luZGV4KSB7DQoJCSR2WyRib3VuZGFyeV9pbmRleF0gPSAkYm91 bmRhcnk7DQoJICAgIH0NCgkgICAgZWxzZSB7DQoJCXB1c2goQHYsIGJvdW5kYXJ5ID0+ICRib3Vu ZGFyeSk7DQoJICAgIH0NCg0KCSAgICAkY3QgPSBIVFRQOjpIZWFkZXJzOjpVdGlsOjpqb2luX2hl YWRlcl93b3JkcyhAdik7DQoJfQ0KCWVsc2Ugew0KCSAgICAjIFdlIHVzZSBhIHRlbXBvcmFyeSBV Ukkgb2JqZWN0IHRvIGZvcm1hdA0KCSAgICAjIHRoZSBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVy bGVuY29kZWQgY29udGVudC4NCgkgICAgcmVxdWlyZSBVUkk7DQoJICAgIG15ICR1cmwgPSBVUkkt Pm5ldygnaHR0cDonKTsNCgkgICAgJHVybC0+cXVlcnlfZm9ybShyZWYoJGNvbnRlbnQpIGVxICJI QVNIIiA/ICUkY29udGVudCA6IEAkY29udGVudCk7DQoJICAgICRjb250ZW50ID0gJHVybC0+cXVl cnk7DQoJfQ0KICAgIH0NCg0KICAgICRyZXEtPmhlYWRlcignQ29udGVudC1UeXBlJyA9PiAkY3Qp OyAgIyBtaWdodCBiZSByZWR1bmRhbnQNCiAgICBpZiAoZGVmaW5lZCgkY29udGVudCkpIHsNCgkk cmVxLT5oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJyA9Pg0KCQkgICAgIGxlbmd0aCgkY29udGVudCkp IHVubGVzcyByZWYoJGNvbnRlbnQpOw0KCSRyZXEtPmNvbnRlbnQoJGNvbnRlbnQpOw0KICAgIH0N CiAgICBlbHNlIHsNCiAgICAgICAgJHJlcS0+aGVhZGVyKCdDb250ZW50LUxlbmd0aCcgPT4gMCk7 DQogICAgfQ0KICAgICRyZXE7DQp9DQoNCg0Kc3ViIF9zaW1wbGVfcmVxDQp7DQogICAgbXkoJG1l dGhvZCwgJHVybCkgPSBzcGxpY2UoQF8sIDAsIDIpOw0KICAgIG15ICRyZXEgPSBIVFRQOjpSZXF1 ZXN0LT5uZXcoJG1ldGhvZCA9PiAkdXJsKTsNCiAgICBteSgkaywgJHYpOw0KICAgIHdoaWxlICgo JGssJHYpID0gc3BsaWNlKEBfLCAwLCAyKSkgew0KCWlmIChsYygkaykgZXEgJ2NvbnRlbnQnKSB7 DQoJICAgICRyZXEtPmFkZF9jb250ZW50KCR2KTsNCgl9DQoJZWxzZSB7DQoJICAgICRyZXEtPnB1 c2hfaGVhZGVyKCRrLCAkdik7DQoJfQ0KICAgIH0NCiAgICAkcmVxOw0KfQ0KDQoNCnN1YiBmb3Jt X2RhdGEgICAjIFJGQzE4NjcNCnsNCiAgICBteSgkZGF0YSwgJGJvdW5kYXJ5LCAkcmVxKSA9IEBf Ow0KICAgIG15IEBkYXRhID0gcmVmKCRkYXRhKSBlcSAiSEFTSCIgPyAlJGRhdGEgOiBAJGRhdGE7 ICAjIGNvcHkNCiAgICBteSAkZmhwYXJ0czsNCiAgICBteSBAcGFydHM7DQogICAgbXkoJGssJHYp Ow0KICAgIHdoaWxlICgoJGssJHYpID0gc3BsaWNlKEBkYXRhLCAwLCAyKSkgew0KCWlmICghcmVm KCR2KSkgew0KCSAgICAkayA9fiBzLyhbXFxcIl0pL1xcJDEvZzsgICMgZXNjYXBlIHF1b3RlcyBh bmQgYmFja3NsYXNoZXMNCgkgICAgcHVzaChAcGFydHMsDQoJCSBxcShDb250ZW50LURpc3Bvc2l0 aW9uOiBmb3JtLWRhdGE7IG5hbWU9IiRrIiRDUkxGJENSTEYkdikpOw0KCX0NCgllbHNlIHsNCgkg ICAgbXkoJGZpbGUsICR1c2VuYW1lLCBAaGVhZGVycykgPSBAJHY7DQoJICAgIHVubGVzcyAoZGVm aW5lZCAkdXNlbmFtZSkgew0KCQkkdXNlbmFtZSA9ICRmaWxlOw0KCQkkdXNlbmFtZSA9fiBzLC4q LywsIGlmIGRlZmluZWQoJHVzZW5hbWUpOw0KCSAgICB9DQoJICAgIG15ICRkaXNwID0gcXEoZm9y bS1kYXRhOyBuYW1lPSIkayIpOw0KCSAgICAkZGlzcCAuPSBxcSg7IGZpbGVuYW1lPSIkdXNlbmFt ZSIpIGlmICR1c2VuYW1lOw0KCSAgICBteSAkY29udGVudCA9ICIiOw0KCSAgICBteSAkaCA9IEhU VFA6OkhlYWRlcnMtPm5ldyhAaGVhZGVycyk7DQoJICAgIG15ICRjdCA9ICRoLT5oZWFkZXIoIkNv bnRlbnQtVHlwZSIpOw0KCSAgICBpZiAoJGZpbGUpIHsNCgkJaWYgKCREWU5BTUlDX0ZJTEVfVVBM T0FEKSB7DQoJCSAgICAjIHdpbGwgcmVhZCBmaWxlIGxhdGVyDQoJCSAgICAkY29udGVudCA9IFwk ZmlsZTsNCgkJfQ0KCQllbHNlIHsNCgkJICAgIHJlcXVpcmUgU3ltYm9sOw0KCQkgICAgbXkgJGZo ID0gU3ltYm9sOjpnZW5zeW0oKTsNCiAgICAgICAgICAgICAgICAgICAgb3BlbigkZmgsICRmaWxl KSBvciBDYXJwOjpjcm9haygiQ2FuJ3Qgb3BlbiBmaWxlICRmaWxlOiAkISIpOw0KICAgICAgICAg ICAgICAgICAgICBiaW5tb2RlKCRmaCk7DQoJCSAgICBsb2NhbCgkLykgPSB1bmRlZjsgIyBzbHVy cCBmaWxlcw0KCQkgICAgJGNvbnRlbnQgPSA8JGZoPjsNCgkJICAgIGNsb3NlKCRmaCk7DQoJCX0N CgkJdW5sZXNzICgkY3QpIHsNCgkJICAgIHJlcXVpcmUgTFdQOjpNZWRpYVR5cGVzOw0KCQkgICAg JGN0ID0gTFdQOjpNZWRpYVR5cGVzOjpndWVzc19tZWRpYV90eXBlKCRmaWxlLCAkaCk7DQoJCX0N CgkgICAgfQ0KCSAgICBpZiAoJGgtPmhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIpKSB7DQoJ CSMganVzdCB0byBnZXQgaXQgc29ydGVkIGZpcnN0DQoJCSRkaXNwID0gJGgtPmhlYWRlcigiQ29u dGVudC1EaXNwb3NpdGlvbiIpOw0KCQkkaC0+cmVtb3ZlX2hlYWRlcigiQ29udGVudC1EaXNwb3Np dGlvbiIpOw0KCSAgICB9DQoJICAgIGlmICgkaC0+aGVhZGVyKCJDb250ZW50IikpIHsNCgkJJGNv bnRlbnQgPSAkaC0+aGVhZGVyKCJDb250ZW50Iik7DQoJCSRoLT5yZW1vdmVfaGVhZGVyKCJDb250 ZW50Iik7DQoJICAgIH0NCgkgICAgbXkgJGhlYWQgPSBqb2luKCRDUkxGLCAiQ29udGVudC1EaXNw b3NpdGlvbjogJGRpc3AiLA0KCQkJICAgICAgICAgICAkaC0+YXNfc3RyaW5nKCRDUkxGKSwNCgkJ CSAgICAgICAgICAgIiIpOw0KCSAgICBpZiAocmVmICRjb250ZW50KSB7DQoJCXB1c2goQHBhcnRz LCBbJGhlYWQsICQkY29udGVudF0pOw0KCQkkZmhwYXJ0cysrOw0KCSAgICB9DQoJICAgIGVsc2Ug ew0KCQlwdXNoKEBwYXJ0cywgJGhlYWQgLiAkY29udGVudCk7DQoJICAgIH0NCgl9DQogICAgfQ0K ICAgIHJldHVybiAiIiB1bmxlc3MgQHBhcnRzOw0KDQogICAgbXkgJGNvbnRlbnQ7DQogICAgaWYg KCRmaHBhcnRzKSB7DQoJJGJvdW5kYXJ5ID0gYm91bmRhcnkoMTApICMgaG9wZWZ1bGx5IGVub3Vn aCByYW5kb21uZXNzDQoJICAgIHVubGVzcyAkYm91bmRhcnk7DQoNCgkjIGFkZCB0aGUgYm91bmRh cmllcyB0byB0aGUgQHBhcnRzIGFycmF5DQoJZm9yICgxLi5AcGFydHMtMSkgew0KCSAgICBzcGxp Y2UoQHBhcnRzLCAkXyoyLTEsIDAsICIkQ1JMRi0tJGJvdW5kYXJ5JENSTEYiKTsNCgl9DQoJdW5z aGlmdChAcGFydHMsICItLSRib3VuZGFyeSRDUkxGIik7DQoJcHVzaChAcGFydHMsICIkQ1JMRi0t JGJvdW5kYXJ5LS0kQ1JMRiIpOw0KDQoJIyBTZWUgaWYgd2UgY2FuIGdlbmVyYXRlIENvbnRlbnQt TGVuZ3RoIGhlYWRlcg0KCW15ICRsZW5ndGggPSAwOw0KCWZvciAoQHBhcnRzKSB7DQoJICAgIGlm IChyZWYgJF8pIHsNCgkgCW15ICgkaGVhZCwgJGYpID0gQCRfOw0KCQlteSAkZmlsZV9zaXplOw0K CQl1bmxlc3MgKCAtZiAkZiAmJiAoJGZpbGVfc2l6ZSA9IC1zIF8pICkgew0KCQkgICAgIyBUaGUg ZmlsZSBpcyBlaXRoZXIgYSBkeW5hbWljIGZpbGUgbGlrZSAvZGV2L2F1ZGlvDQoJCSAgICAjIG9y IHBlcmhhcHMgYSBmaWxlIGluIHRoZSAvcHJvYyBmaWxlIHN5c3RlbSB3aGVyZQ0KCQkgICAgIyBz dGF0IG1heSByZXR1cm4gYSAwIHNpemUgZXZlbiB0aG91Z2ggcmVhZGluZyBpdA0KCQkgICAgIyB3 aWxsIHByb2R1Y2UgZGF0YS4gIFNvIHdlIGNhbm5vdCBtYWtlDQoJCSAgICAjIGEgQ29udGVudC1M ZW5ndGggaGVhZGVyLiAgDQoJCSAgICB1bmRlZiAkbGVuZ3RoOw0KCQkgICAgbGFzdDsNCgkJfQ0K CSAgICAJJGxlbmd0aCArPSAkZmlsZV9zaXplICsgbGVuZ3RoICRoZWFkOw0KCSAgICB9DQoJICAg IGVsc2Ugew0KCQkkbGVuZ3RoICs9IGxlbmd0aDsNCgkgICAgfQ0KICAgICAgICB9DQogICAgICAg ICRsZW5ndGggJiYgJHJlcS0+aGVhZGVyKCdDb250ZW50LUxlbmd0aCcgPT4gJGxlbmd0aCk7DQoN CgkjIHNldCB1cCBhIGNsb3N1cmUgdGhhdCB3aWxsIHJldHVybiBjb250ZW50IHBpZWNlbWVhbA0K CSRjb250ZW50ID0gc3ViIHsNCgkgICAgZm9yICg7Oykgew0KCQl1bmxlc3MgKEBwYXJ0cykgew0K CQkgICAgZGVmaW5lZCAkbGVuZ3RoICYmICRsZW5ndGggIT0gMCAmJg0KCQkgICAgCUNhcnA6OmNy b2FrICJsZW5ndGggb2YgZGF0YSBzZW50IGRpZCBub3QgbWF0Y2ggY2FsY3VsYXRlZCBDb250ZW50 LUxlbmd0aCBoZWFkZXIuICBQcm9iYWJseSBiZWNhdXNlIHVwbG9hZGVkIGZpbGUgY2hhbmdlZCBp biBzaXplIGR1cmluZyB0cmFuc2Zlci4iOw0KCQkgICAgcmV0dXJuOw0KCQl9DQoJCW15ICRwID0g c2hpZnQgQHBhcnRzOw0KCQl1bmxlc3MgKHJlZiAkcCkgew0KCQkgICAgJHAgLj0gc2hpZnQgQHBh cnRzIHdoaWxlIEBwYXJ0cyAmJiAhcmVmKCRwYXJ0c1swXSk7DQoJCSAgICBkZWZpbmVkICRsZW5n dGggJiYgKCRsZW5ndGggLT0gbGVuZ3RoICRwKTsNCgkJICAgIHJldHVybiAkcDsNCgkJfQ0KCQlt eSgkYnVmLCAkZmgpID0gQCRwOw0KCQlpZiAoIXJlZigkZmgpKQ0KCQl7DQoJCQlteSAkZmlsZSA9 ICRmaDsNCgkgICAgICAgIAlyZXF1aXJlIFN5bWJvbDsNCiAgICAgICAgICAgICAgICAJJGZoID0g U3ltYm9sOjpnZW5zeW0oKTsNCiAgICAgICAgICAgICAgICAJb3BlbigkZmgsICRmaWxlKSBvciBD YXJwOjpjcm9haygiQ2FuJ3Qgb3BlbiBmaWxlICRmaWxlOiAkISIpOw0KICAgICAgICAgICAgICAg IAliaW5tb2RlKCRmaCk7DQoJCX0NCgkJbXkgJGJ1Zmxlbmd0aCA9IGxlbmd0aCAkYnVmOw0KCQlt eSAkbiA9IHJlYWQoJGZoLCAkYnVmLCAyMDQ4LCAkYnVmbGVuZ3RoKTsNCgkJaWYgKCRuKSB7DQoJ CSAgICAkYnVmbGVuZ3RoICs9ICRuOw0KCQkgICAgdW5zaGlmdChAcGFydHMsIFsiIiwgJGZoXSk7 DQoJCX0NCgkJZWxzZSB7DQoJCSAgICBjbG9zZSgkZmgpOw0KCQl9DQoJCWlmICgkYnVmbGVuZ3Ro KSB7DQoJCSAgICBkZWZpbmVkICRsZW5ndGggJiYgKCRsZW5ndGggLT0gJGJ1Zmxlbmd0aCk7DQoJ CSAgICByZXR1cm4gJGJ1ZiANCgkgICAgCX0NCgkgICAgfQ0KCX07DQoNCiAgICB9DQogICAgZWxz ZSB7DQoJJGJvdW5kYXJ5ID0gYm91bmRhcnkoKSB1bmxlc3MgJGJvdW5kYXJ5Ow0KDQoJbXkgJGJu byA9IDA7DQogICAgICBDSEVDS19CT1VOREFSWToNCgl7DQoJICAgIGZvciAoQHBhcnRzKSB7DQoJ CWlmIChpbmRleCgkXywgJGJvdW5kYXJ5KSA+PSAwKSB7DQoJCSAgICAjIG11c3QgaGF2ZSBhIGJl dHRlciBib3VuZGFyeQ0KCQkgICAgJGJvdW5kYXJ5ID0gYm91bmRhcnkoKyskYm5vKTsNCgkJICAg IHJlZG8gQ0hFQ0tfQk9VTkRBUlk7DQoJCX0NCgkgICAgfQ0KCSAgICBsYXN0Ow0KCX0NCgkkY29u dGVudCA9ICItLSRib3VuZGFyeSRDUkxGIiAuDQoJICAgICAgICAgICBqb2luKCIkQ1JMRi0tJGJv dW5kYXJ5JENSTEYiLCBAcGFydHMpIC4NCgkJICAgIiRDUkxGLS0kYm91bmRhcnktLSRDUkxGIjsN CiAgICB9DQpwcmludCAicHJpbnQgM1xuIjsNCiAgICB3YW50YXJyYXkgPyAoJGNvbnRlbnQsICRi b3VuZGFyeSkgOiAkY29udGVudDsNCn0NCg0KDQpzdWIgYm91bmRhcnkNCnsNCiAgICBteSAkc2l6 ZSA9IHNoaWZ0IHx8IHJldHVybiAieFl6WlkiOw0KICAgIHJlcXVpcmUgTUlNRTo6QmFzZTY0Ow0K ICAgIG15ICRiID0gTUlNRTo6QmFzZTY0OjplbmNvZGUoam9pbigiIiwgbWFwIGNocihyYW5kKDI1 NikpLCAxLi4kc2l6ZSozKSwgIiIpOw0KICAgICRiID1+IHMvW1xXXS9YL2c7ICAjIGVuc3VyZSBh bG51bSBvbmx5DQogICAgJGI7DQp9DQoNCjE7DQoNCl9fRU5EX18NCg0KPWhlYWQxIE5BTUUNCg0K SFRUUDo6UmVxdWVzdDo6Q29tbW9uIC0gQ29uc3RydWN0IGNvbW1vbiBIVFRQOjpSZXF1ZXN0IG9i amVjdHMNCg0KPWhlYWQxIFNZTk9QU0lTDQoNCiAgdXNlIEhUVFA6OlJlcXVlc3Q6OkNvbW1vbjsN CiAgJHVhID0gTFdQOjpVc2VyQWdlbnQtPm5ldzsNCiAgJHVhLT5yZXF1ZXN0KEdFVCAnaHR0cDov L3d3dy5zbi5uby8nKTsNCiAgJHVhLT5yZXF1ZXN0KFBPU1QgJ2h0dHA6Ly9zb21ld2hlcmUvZm9v JywgW2ZvbyA9PiBiYXIsIGJhciA9PiBmb29dKTsNCg0KPWhlYWQxIERFU0NSSVBUSU9ODQoNClRo aXMgbW9kdWxlIHByb3ZpZGUgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIG5ld2x5IGNyZWF0ZWQgSFRU UDo6UmVxdWVzdA0Kb2JqZWN0cy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXN1YWxseSBtb3JlIGNv bnZlbmllbnQgdG8gdXNlIHRoYW4gdGhlDQpzdGFuZGFyZCBIVFRQOjpSZXF1ZXN0IGNvbnN0cnVj dG9yIGZvciB0aGVzZSBjb21tb24gcmVxdWVzdHMuICBUaGUNCmZvbGxvd2luZyBmdW5jdGlvbnMg YXJlIHByb3ZpZGVkLg0KDQo9b3ZlciA0DQoNCj1pdGVtIEdFVCAkdXJsLCBIZWFkZXIgPT4gVmFs dWUsLi4uDQoNClRoZSBHRVQoKSBmdW5jdGlvbiByZXR1cm5zIGEgSFRUUDo6UmVxdWVzdCBvYmpl Y3QgaW5pdGlhbGl6ZWQgd2l0aCB0aGUNCkdFVCBtZXRob2QgYW5kIHRoZSBzcGVjaWZpZWQgVVJM LiAgV2l0aG91dCBhZGRpdGlvbmFsIGFyZ3VtZW50cyBpdA0KaXMgZXhhY3RseSBlcXVpdmFsZW50 IHRvIHRoZSBmb2xsb3dpbmcgY2FsbA0KDQogIEhUVFA6OlJlcXVlc3QtPm5ldyhHRVQgPT4gJHVy bCkNCg0KYnV0IGlzIGxlc3MgY2x1dHRlcmVkLiAgSXQgYWxzbyByZWFkcyBiZXR0ZXIgd2hlbiB1 c2VkIHRvZ2V0aGVyIHdpdGggdGhlDQpMV1A6OlVzZXJBZ2VudC0+cmVxdWVzdCgpIG1ldGhvZDoN Cg0KICBteSAkdWEgPSBuZXcgTFdQOjpVc2VyQWdlbnQ7DQogIG15ICRyZXMgPSAkdWEtPnJlcXVl c3QoR0VUICdodHRwOi8vd3d3LnNuLm5vJykNCiAgaWYgKCRyZXMtPmlzX3N1Y2Nlc3MpIHsgLi4u DQoNCllvdSBjYW4gYWxzbyBpbml0aWFsaXplIGhlYWRlciB2YWx1ZXMgaW4gdGhlIHJlcXVlc3Qg Ynkgc3BlY2lmeWluZw0Kc29tZSBrZXkvdmFsdWUgcGFpcnMgYXMgb3B0aW9uYWwgYXJndW1lbnRz LiAgRm9yIGluc3RhbmNlOg0KDQogICR1YS0+cmVxdWVzdChHRVQgJ2h0dHA6Ly93d3cuc24ubm8n LA0KCSAgICAgICAgICAgSWZfTWF0Y2ggPT4gJ2ZvbycsDQogICAgICAgICAgICAgICAgICAgRnJv bSAgICAgPT4gJ2dpc2xlQGFhcy5ubycsDQogICAgICAgICAgICAgICk7DQoNCkEgaGVhZGVyIGtl eSBjYWxsZWQgJ0NvbnRlbnQnIGlzIHNwZWNpYWwgYW5kIHdoZW4gc2VlbiB0aGUgdmFsdWUgd2ls bA0KaW5pdGlhbGl6ZSB0aGUgY29udGVudCBwYXJ0IG9mIHRoZSByZXF1ZXN0IGluc3RlYWQgb2Yg c2V0dGluZyBhIGhlYWRlci4NCg0KPWl0ZW0gSEVBRCAkdXJsLCBbSGVhZGVyID0+IFZhbHVlLC4u Ll0NCg0KTGlrZSBHRVQoKSBidXQgdGhlIG1ldGhvZCBpbiB0aGUgcmVxdWVzdCBpcyBIRUFELg0K DQo9aXRlbSBQVVQgJHVybCwgW0hlYWRlciA9PiBWYWx1ZSwuLi5dDQoNCkxpa2UgR0VUKCkgYnV0 IHRoZSBtZXRob2QgaW4gdGhlIHJlcXVlc3QgaXMgUFVULg0KDQo9aXRlbSBQT1NUICR1cmwsIFsk Zm9ybV9yZWZdLCBbSGVhZGVyID0+IFZhbHVlLC4uLl0NCg0KVGhpcyB3b3JrcyBtb3N0bHkgbGlr ZSBHRVQoKSB3aXRoIFBPU1QgYXMgdGhlIG1ldGhvZCwgYnV0IHRoaXMgZnVuY3Rpb24NCmFsc28g dGFrZXMgYSBzZWNvbmQgb3B0aW9uYWwgYXJyYXkgb3IgaGFzaCByZWZlcmVuY2UgcGFyYW1ldGVy DQooJGZvcm1fcmVmKS4gIFRoaXMgYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gcGFzcyBrZXkvdmFs dWUgcGFpcnMgZm9yDQp0aGUgZm9ybSBjb250ZW50LiAgQnkgZGVmYXVsdCB3ZSB3aWxsIGluaXRp YWxpemUgYSByZXF1ZXN0IHVzaW5nIHRoZQ0KQzxhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVu Y29kZWQ+IGNvbnRlbnQgdHlwZS4gIFRoaXMgbWVhbnMgdGhhdA0KeW91IGNhbiBlbXVsYXRlIGEg SFRNTCBFPGx0PmZvcm0+IFBPU1RpbmcgbGlrZSB0aGlzOg0KDQogIFBPU1QgJ2h0dHA6Ly93d3cu cGVybC5vcmcvc3VydmV5LmNnaScsDQogICAgICAgWyBuYW1lICAgPT4gJ0dpc2xlIEFhcycsDQog ICAgICAgICBlbWFpbCAgPT4gJ2dpc2xlQGFhcy5ubycsDQogICAgICAgICBnZW5kZXIgPT4gJ00n LA0KICAgICAgICAgYm9ybiAgID0+ICcxOTY0JywNCiAgICAgICAgIHBlcmMgICA9PiAnMyUnLA0K ICAgICAgIF07DQoNClRoaXMgd2lsbCBjcmVhdGUgYSBIVFRQOjpSZXF1ZXN0IG9iamVjdCB0aGF0 IGxvb2tzIGxpa2UgdGhpczoNCg0KICBQT1NUIGh0dHA6Ly93d3cucGVybC5vcmcvc3VydmV5LmNn aQ0KICBDb250ZW50LUxlbmd0aDogNjYNCiAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3 dy1mb3JtLXVybGVuY29kZWQNCg0KICBuYW1lPUdpc2xlJTIwQWFzJmVtYWlsPWdpc2xlJTQwYWFz Lm5vJmdlbmRlcj1NJmJvcm49MTk2NCZwZXJjPTMlMjUNCg0KVGhlIFBPU1QgbWV0aG9kIGFsc28g c3VwcG9ydHMgdGhlIEM8bXVsdGlwYXJ0L2Zvcm0tZGF0YT4gY29udGVudCB1c2VkDQpmb3IgSTxG b3JtLWJhc2VkIEZpbGUgVXBsb2FkPiBhcyBzcGVjaWZpZWQgaW4gUkZDIDE4NjcuICBZb3UgdHJp Z2dlcg0KdGhpcyBjb250ZW50IGZvcm1hdCBieSBzcGVjaWZ5aW5nIGEgY29udGVudCB0eXBlIG9m IEM8J2Zvcm0tZGF0YSc+IGFzDQpvbmUgb2YgdGhlIHJlcXVlc3QgaGVhZGVycy4gIElmIG9uZSBv ZiB0aGUgdmFsdWVzIGluIHRoZSAkZm9ybV9yZWYgaXMNCmFuIGFycmF5IHJlZmVyZW5jZSwgdGhl biBpdCBpcyB0cmVhdGVkIGFzIGEgZmlsZSBwYXJ0IHNwZWNpZmljYXRpb24NCndpdGggdGhlIGZv bGxvd2luZyBpbnRlcnByZXRhdGlvbjoNCg0KICBbICRmaWxlLCAkZmlsZW5hbWUsIEhlYWRlciA9 PiBWYWx1ZS4uLiBdDQoNClRoZSBmaXJzdCB2YWx1ZSBpbiB0aGUgYXJyYXkgKCRmaWxlKSBpcyB0 aGUgbmFtZSBvZiBhIGZpbGUgdG8gb3Blbi4NClRoaXMgZmlsZSB3aWxsIGJlIHJlYWQgYW5kIGl0 cyBjb250ZW50IHBsYWNlZCBpbiB0aGUgcmVxdWVzdC4gIFRoZQ0Kcm91dGluZSB3aWxsIGNyb2Fr IGlmIHRoZSBmaWxlIGNhbid0IGJlIG9wZW5lZC4gIFVzZSBhbiBDPHVuZGVmPiBhcyAkZmlsZQ0K dmFsdWUgaWYgeW91IHdhbnQgdG8gc3BlY2lmeSB0aGUgY29udGVudCBkaXJlY3RseS4gIFRoZSAk ZmlsZW5hbWUgaXMNCnRoZSBmaWxlbmFtZSB0byByZXBvcnQgaW4gdGhlIHJlcXVlc3QuICBJZiB0 aGlzIHZhbHVlIGlzIHVuZGVmaW5lZCwNCnRoZW4gdGhlIGJhc2VuYW1lIG9mIHRoZSAkZmlsZSB3 aWxsIGJlIHVzZWQuICBZb3UgY2FuIHNwZWNpZnkgYW4gZW1wdHkNCnN0cmluZyBhcyAkZmlsZW5h bWUgaWYgeW91IGRvbid0IHdhbnQgYW55IGZpbGVuYW1lIGluIHRoZSByZXF1ZXN0Lg0KDQpTZW5k aW5nIG15IEY8fi8ucHJvZmlsZT4gdG8gdGhlIHN1cnZleSB1c2VkIGFzIGV4YW1wbGUgYWJvdmUg Y2FuIGJlDQphY2hpZXZlZCBieSB0aGlzOg0KDQogIFBPU1QgJ2h0dHA6Ly93d3cucGVybC5vcmcv c3VydmV5LmNnaScsDQogICAgICAgQ29udGVudF9UeXBlID0+ICdmb3JtLWRhdGEnLA0KICAgICAg IENvbnRlbnQgICAgICA9PiBbIG5hbWUgID0+ICdHaXNsZSBBYXMnLA0KICAgICAgICAgICAgICAg ICAgICAgICAgIGVtYWlsID0+ICdnaXNsZUBhYXMubm8nLA0KICAgICAgICAgICAgICAgICAgICAg ICAgIGdlbmRlciA9PiAnTScsDQogICAgICAgICAgICAgICAgICAgICAgICAgYm9ybiAgID0+ICcx OTY0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICBpbml0ICAgPT4gWyIkRU5We0hPTUV9Ly5w cm9maWxlIl0sDQogICAgICAgICAgICAgICAgICAgICAgIF0NCg0KVGhpcyB3aWxsIGNyZWF0ZSBh IEhUVFA6OlJlcXVlc3Qgb2JqZWN0IHRoYXQgYWxtb3N0IGxvb2tzIHRoaXMgKHRoZQ0KYm91bmRh cnkgYW5kIHRoZSBjb250ZW50IG9mIHlvdXIgRjx+Ly5wcm9maWxlPiBpcyBsaWtlbHkgdG8gYmUN CmRpZmZlcmVudCk6DQoNCiAgUE9TVCBodHRwOi8vd3d3LnBlcmwub3JnL3N1cnZleS5jZ2kNCiAg Q29udGVudC1MZW5ndGg6IDM4OA0KICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9mb3JtLWRhdGE7 IGJvdW5kYXJ5PSI2RytmIg0KDQogIC0tNkcrZg0KICBDb250ZW50LURpc3Bvc2l0aW9uOiBmb3Jt LWRhdGE7IG5hbWU9Im5hbWUiDQogIA0KICBHaXNsZSBBYXMNCiAgLS02RytmDQogIENvbnRlbnQt RGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0iZW1haWwiDQogIA0KICBnaXNsZUBhYXMubm8N CiAgLS02RytmDQogIENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT0iZ2VuZGVy Ig0KICANCiAgTQ0KICAtLTZHK2YNCiAgQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBu YW1lPSJib3JuIg0KICANCiAgMTk2NA0KICAtLTZHK2YNCiAgQ29udGVudC1EaXNwb3NpdGlvbjog Zm9ybS1kYXRhOyBuYW1lPSJpbml0IjsgZmlsZW5hbWU9Ii5wcm9maWxlIg0KICBDb250ZW50LVR5 cGU6IHRleHQvcGxhaW4NCiAgDQogIFBBVEg9L2xvY2FsL3BlcmwvYmluOiRQQVRIDQogIGV4cG9y dCBQQVRIDQoNCiAgLS02RytmLS0NCg0KSWYgeW91IHNldCB0aGUgJERZTkFNSUNfRklMRV9VUExP QUQgdmFyaWFibGUgKGV4cG9ydGFibGUpIHRvIHNvbWUgVFJVRQ0KdmFsdWUsIHRoZW4geW91IGdl dCBiYWNrIGEgcmVxdWVzdCBvYmplY3Qgd2l0aCBhIHN1YnJvdXRpbmUgY2xvc3VyZSBhcw0KdGhl IGNvbnRlbnQgYXR0cmlidXRlLiAgVGhpcyBzdWJyb3V0aW5lIHdpbGwgcmVhZCB0aGUgY29udGVu dCBvZiBhbnkNCmZpbGVzIG9uIGRlbWFuZCBhbmQgcmV0dXJuIGl0IGluIHN1aXRhYmxlIGNodW5r cy4gIFRoaXMgYWxsb3cgeW91IHRvDQp1cGxvYWQgYXJiaXRyYXJ5IGJpZyBmaWxlcyB3aXRob3V0 IHVzaW5nIGxvdHMgb2YgbWVtb3J5LiAgWW91IGNhbiBldmVuDQp1cGxvYWQgaW5maW5pdGUgZmls ZXMgbGlrZSBGPC9kZXYvYXVkaW8+IGlmIHlvdSB3aXNoOyBob3dldmVyLCBpZg0KdGhlIGZpbGUg aXMgbm90IGEgcGxhaW4gZmlsZSwgdGhlcmUgd2lsbCBiZSBubyBDb250ZW50LUxlbmd0aCBoZWFk ZXINCmRlZmluZWQgZm9yIHRoZSByZXF1ZXN0LiAgTm90IGFsbCBzZXJ2ZXJzIChvciBzZXJ2ZXIN CmFwcGxpY2F0aW9ucykgbGlrZSB0aGlzLiAgQWxzbywgaWYgdGhlIGZpbGUocykgY2hhbmdlIGlu IHNpemUgYmV0d2Vlbg0KdGhlIHRpbWUgdGhlIENvbnRlbnQtTGVuZ3RoIGlzIGNhbGN1bGF0ZWQg YW5kIHRoZSB0aW1lIHRoYXQgdGhlIGxhc3QNCmNodW5rIGlzIGRlbGl2ZXJlZCwgdGhlIHN1YnJv dXRpbmUgd2lsbCBDPENyb2FrPi4NCg0KPWJhY2sNCg0KPWhlYWQxIFNFRSBBTFNPDQoNCkw8SFRU UDo6UmVxdWVzdD4sIEw8TFdQOjpVc2VyQWdlbnQ+DQoNCg0KPWhlYWQxIENPUFlSSUdIVA0KDQpD b3B5cmlnaHQgMTk5Ny0yMDAwLCBHaXNsZSBBYXMNCg0KVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KbW9kaWZ5IGl0IHVuZGVyIHRo ZSBzYW1lIHRlcm1zIGFzIFBlcmwgaXRzZWxmLg0KDQo9Y3V0DQoNCg== ------_=_NextPart_001_01C8DACB.311AA0FA--
Navigate in group perl.libwww at sever nntp.perl.org
Previous Next




  
© No Copyright
You are free to use Anything
Site Maintained by PHP Developer
Powered By PHP Consultants