in reply to Re^5: Sorting text files.
in thread Sorting text files.

Well, the OP didn't ask for that, but if he wants it, (and this is one of the reasons I love perl) it's an easy fix :)

#!/usr/bin/perl # http://perlmonks.org/?node_id=1147112 use Inline::Files; use strict; use warnings; my %id; $id{ s/;.*//r } .= $_ for sort <FILE1>; print delete @id{ <FILE2> }, values %id; __FILE1__ 1 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2305=27:2307=NAR@4;2306=en +g@106:2308;2309=eng:0:21000:2:2066:0 2 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2315=27:2316=NAR@4;2317=en +g@106:2318;2319=eng:0:21020:2:2066:0 3 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2320=27:2321=NAR@4;2322=en +g@106:2323;2324=eng:0:21030:2:2066:0 ITV HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2305=27:2307=NAR@4;2306= +eng@106:2308;2309=eng:0:21000:2:2066:0 __FILE2__ 3 HD 1 HD 2 HD

(with another simplification thrown in)

Replies are listed 'Best First'.
Re^7: Sorting text files.
by BrowserUk (Patriarch) on Nov 07, 2015 at 00:34 UTC
    Nice!
Re^7: Sorting text files.
by Saner (Novice) on Nov 07, 2015 at 10:50 UTC
    Ok excuse the stupid question, but perl is new to me.

    I have file names FILE1 and FILE2 I also tried with __FILE1__ as read here (http://search.cpan.org/~ambs/Inline-Files-0.69/lib/Inline/Files.pm)

    But I keep getting errors

    xbmc@bloris:~/vdrchan$ perl sort2.pl

    + Name "main::FILE1" used only once: possible typo at sort2.pl line 9. + + Name "main::FILE2" used only once: possible typo at sort2.pl line 7. + + readline() on unopened filehandle FILE2 at sort2.pl line 7. + + readline() on unopened filehandle FILE1 at sort2.pl line 9.
    These are warnings obviously, but I get no output
    Is vf load failing?
    xbmc@bloris:~/vdrchan/test$ perl + + use Inline::Files; + + Could not vf_load '/home/xbmc/vdrchan/test/-' at /usr/local/share/perl +/5.18.2/Inline/Files.pm line 39. + BEGIN failed--compilation aborted at - line 1. + + xbmc@bloris:~/vdrchan/test$

    cpan[1]> install Inline::Files + + Reading '/home/xbmc/.cpan/Metadata' + + Database was generated on Fri, 06 Nov 2015 19:17:02 GMT + + Inline::Files is up to date (0.69). + + + + cpan[2]>

      The module Inline::Files is just used to make a self-contained program for testing purposes. Use perl's normal open function for actual usage.

      See "perldoc -f open".

      #!/usr/bin/perl # http://perlmonks.org/?node_id=1147112 use strict; use warnings; my %id; open my $fhdata, '<', 'File1' or die "$! opening File1"; open my $fhorder, '<', 'File2' or die "$! opening File2"; $id{ s/;.*//r } .= $_ for sort <$fhdata>; print delete @id{ <$fhorder> }, sort values %id; close $fhdata; close $fhorder;

      Where the file named "File1" contains your first file, and the file named "File2" contains your second file.

        Thank you, to all of you.