Note that there are some explanatory texts on larger screens.

plurals
  1. POIssue with Perl hash uniqueness
    primarykey
    data
    text
    <p>I am very inexperience with perl, and I have a simple task I need to complete. I have a list of strings, where the first part of the string is a file name, and the second part of the string is a version number, separated by an underscore. I want to print out the string that contains that latest version for each file.</p> <p>For example, with the following data set:</p> <pre><code>P0689.D130624.C01_0 P0689.D130624.C02_0 P0689.D130624.C04_0 P0689.D130624.C05_0 P0730.D130624.C01_0 P0730.D130624.C01_1 P0730.D130624.C01_2 P0730.D130624.C01_0 P0730.D130624.C01_1 </code></pre> <p>my output should be:</p> <pre><code>P0689.D130624.C01_0 P0689.D130624.C02_0 P0689.D130624.C04_0 P0689.D130624.C05_0 P0730.D130624.C01_2 </code></pre> <p>I figured the easiest way to do this was split the filename off as a the key to a map, then insert the version as the value if it is the current max. I would then iterate over the hash, and recombining the key/value pairs would give me my result. However, whenever I iterate over my hash, keys do not seem to be unique. The result winds up being my entire initial data set, because the versions are always in ascending order. This is probably a result of my inexperience with the perl syntax, but help would be greatly appreciated.</p> <p>Here is my current code:</p> <pre><code>my %hash = (); foreach my $line (@F) { my @splt = split('_', $line); my $key = $splt[0]; my $val = $splt[1]; unless (exists $hash{$key} and $hash{$key} &gt;= $val) { $hash{$key} = $val; } }; while(my ($k,$v) = each %hash ) { print $k . '_' . $v, "\n"; }; </code></pre> <p>Edit (2): More details on output data.</p> <p>Using this script to demo:</p> <pre><code>#!/bin/bash DIR="/app/jobsandservices/shareddata/nphdocp1/2013/06/24/" FILTER="[Pp]\(0689\|1391\|0730\)" ls -1 $DIR* echo ----- ls -1 $DIR* | grep "$FILTER" echo ----- ls -1 $DIR* | grep "$FILTER" | perl -an latest-version.pl </code></pre> <p>This is the EXACT output from terminal:</p> <pre><code>/app/jobsandservices/shareddata/nphdocp1/2013/06/24/CONFIRM.C0668.S01125_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/CONFIRM.C0668.S26599_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0188.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0212.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C04_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C05_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0701.D130624.C98_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0702.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0706.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0706.D130624.C03_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0709.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C01_1 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C01_2 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C03_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0790.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0790.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0790.D130624.C04_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0821.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0822.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0823.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0824.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0825.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C03_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C04_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C05_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C06_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C07_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C08_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C09_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C10_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C11_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C12_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C13_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C14_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C15_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C16_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C17_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C18_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C19_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0826.D130624.C98_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C03_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C04_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C05_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C06_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C07_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C08_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C09_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C10_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C11_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C12_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C13_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C14_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C15_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C16_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C17_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C18_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C19_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0827.D130624.C98_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P1391.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P1391.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2026.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2029.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2070.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2084.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2156.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2172.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2193.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2202.D130624.C98_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2203.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C03_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C04_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C05_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C06_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C07_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C08_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C09_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C10_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C11_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C12_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C13_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C14_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C15_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C16_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C17_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C18_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C19_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C20_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C21_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C22_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C23_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2361.D130624.C98_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2362.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2363.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2363.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2364.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2365.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2429.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2518.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C03_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C04_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C05_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C06_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C07_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C08_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C09_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C10_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C11_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C12_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C13_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C14_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C15_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C16_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C17_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C18_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C19_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C20_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C21_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C22_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C23_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C24_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2656.D130624.C98_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C03_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C04_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C05_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C06_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C07_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C08_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C09_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C10_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C11_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C12_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C13_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C14_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C15_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C16_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C17_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C18_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C19_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C20_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C21_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C22_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C23_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C24_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2657.D130624.C98_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2658.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2659.D130624.C00_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P2660.D130624.C00_0 ----- /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C04_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C05_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C01_1 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C01_2 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C03_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P1391.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P1391.D130624.C02_0 ----- /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C04_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0689.D130624.C05_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C01_1 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C01_2 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C02_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P0730.D130624.C03_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P1391.D130624.C01_0 /app/jobsandservices/shareddata/nphdocp1/2013/06/24/P1391.D130624.C02_0 </code></pre> <p>This is also using perl v5.10.1, as there may be environment issues afoot.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload