in reply to How to open a file more than 2.6 GB?

In general, this either will Just Work, or else it won't work.

Whether it works or not depends. It depends on stuff. It potentially can depend, for instance, on what operating system you're using, what filesystem (e.g., on Windows it can matter whether it's FAT32 or NTFS, and of course it's never possible with FAT16), what hardware architecture (in particular, whether it's a 32-bit or 64-bit architecture), what compiler was used to compile your perl, what version of which set of C standard libraries it was compiled against and how they were configured when they were compiled, which compiler options were used, and assorted other arcane circumstances you may or may not have any control over.

I'm assuming here that the only problem is that the file is over 2GB. You *did* try your same code, with no changes at all, with a smaller-than-2GB file first, I assume, to make absolutely sure that the file size is the only problem. If not, do so forthwith. Otherwise, my next advice would be to try it on a different computer with a different perl and, if possible, a different operating system and filesystem. As a rule of thumb, it is somewhat more likely to work on more recent versions of perl, on more recent operating systems, and especially on 64-bit systems.

  • Comment on Re: How to open a file more than 2.6 GB?

Replies are listed 'Best First'.
Re^2: How to open a file more than 2.6 GB?
by zytu (Initiate) on Nov 29, 2005 at 02:04 UTC
    The platform information is: Machine hardware: sun4u OS version: 5.8 Processor type: sparc Hardware: SUNW,Ultra-5_10 The perl we use is 5.005_03. I will do some test later. Thank you!
      You might want to upgrade your Perl. From the current INSTALL file:
      =head3 Large file support. Since Perl 5.6.0, Perl has supported large files (files larger than 2 gigabytes), and in many common platforms like Linux or Solaris this support is on by default. This is both good and bad. It is good in that you can use large files, seek(), stat(), and -s them. It is bad in that if you are interfacing + Perl using some extension, the components you are connecting to must also be large file aware: if Perl thinks files can be large but the other parts of the software puzzle do not understand the concept, bad things will happen. One popular extension suffering from this ailment is the Apache extension mod_perl. There's also one known limitation with the current large files implementation: unless you also have 64-bit integers (see the next section), you cannot use the printf/sprintf non-decimal integer format +s like C<%x> to print filesizes. You can use C<%d>, though.
      This doesn't mean you can't get large file support on older versions of Perl, but you might have to recompile perl for that. Read the INSTALL file, and in your case, README.solaris might need a read as well.

      But you're much better of to upgrade. 5.005_03 dates from March 1999. Get at least 5.6.2, preferably 5.8.7. And you now have a reason to upgrade ;-)

      Perl --((8:>*