Ik ben in perl (v5.8.2 built for i686-linux-thread-multi) een netwerk proggie aan het schrijven welke in meerdere threads tegelijk van meerdere file-descriptors leest.
Het probleem is echter dat niet voor elke read actie dezelfde line break moet worden gehanteerd. Bij het lezen van een HTTP-header bijvoorbeeld wil ik per lijn lezen welke middles een \r\n gescheiden is. Bij het lezen van unix files over de sockets wil ik een \n delimeter gebruiken. Maar aangezien de default perl line-delimeter variable ($\) een globale variable is wordt dat in een multi-threaded omgeving vrij lastig.
Dit gaat waarschijnlijk niet werken als het gelijktijdig wordt uitgevoerd. Iemand enig idee wat hiervoor een goede oplossing zou kunnen zijn?
Het probleem is echter dat niet voor elke read actie dezelfde line break moet worden gehanteerd. Bij het lezen van een HTTP-header bijvoorbeeld wil ik per lijn lezen welke middles een \r\n gescheiden is. Bij het lezen van unix files over de sockets wil ik een \n delimeter gebruiken. Maar aangezien de default perl line-delimeter variable ($\) een globale variable is wordt dat in een multi-threaded omgeving vrij lastig.
Perl:
1
2
3
4
5
6
7
8
9
10
11
| # test-thread-1: { $\ = "\r\n"; print while (<$file_handle1>); } # test-thread-2: { $\ = "\n"; print while (<$file_handle2>); } |
Dit gaat waarschijnlijk niet werken als het gelijktijdig wordt uitgevoerd. Iemand enig idee wat hiervoor een goede oplossing zou kunnen zijn?