These scripts will:
โ
Connect to the Perforce server
โ
Retrieve a list of clients (workspaces)
โ
Sort them by last access date (descending order)
1. Prerequisites
Before running the scripts, ensure:
โ Perforce CLI (p4) is installed and accessible in PATH
โ You have Perforce credentials (server, username)
โ You can run p4 clients -l successfully in the command line
2. Ruby Script: List Perforce Clients by Last Access Date
#!/usr/bin/env ruby
# Define Perforce server details
P4PORT = "perforce.company.com:1666"
P4USER = "your_username"
# Run 'p4 clients -l' command and capture output
clients_output = `p4 -p #{P4PORT} -u #{P4USER} clients -l`
# Parse the output and extract client name and access date
clients = []
clients_output.split("\n\n").each do |entry|
client = entry.match(/^Client (\S+)/)&.captures&.first
access_time = entry.match(/^Access:\s+(\d+)/)&.captures&.first.to_i
clients << { name: client, access: access_time } if client && access_time > 0
end
# Sort clients by last access date (descending order)
sorted_clients = clients.sort_by { |c| -c[:access] }
# Print results
puts "Perforce Clients Sorted by Last Access Date (Descending):"
sorted_clients.each do |client|
puts "#{client[:name]} - Last Access: #{Time.at(client[:access])}"
end
Code language: PHP (php)
How to Run the Ruby Script
1๏ธโฃ Save the script as list_p4_clients.rb
2๏ธโฃ Replace "perforce.company.com:1666" and "your_username" with your actual Perforce server details
3๏ธโฃ Open a terminal and run:
ruby list_p4_clients.rb
Code language: CSS (css)
3. Perl Script: List Perforce Clients by Last Access Date
#!/usr/bin/perl
use strict;
use warnings;
# Define Perforce server details
my $P4PORT = "perforce.company.com:1666";
my $P4USER = "your_username";
# Run 'p4 clients -l' command and capture output
my @clients_output = `p4 -p $P4PORT -u $P4USER clients -l`;
# Parse output to extract client name and access time
my @clients;
my ($client, $access_time);
foreach my $line (@clients_output) {
if ($line =~ /^Client (\S+)/) {
$client = $1;
} elsif ($line =~ /^Access:\s+(\d+)/) {
$access_time = $1;
push @clients, { name => $client, access => $access_time } if $client && $access_time;
}
}
# Sort clients by last access date (descending order)
@clients = sort { $b->{access} <=> $a->{access} } @clients;
# Print results
print "Perforce Clients Sorted by Last Access Date (Descending):\n";
foreach my $c (@clients) {
my $date = scalar localtime($c->{access});
print "$c->{name} - Last Access: $date\n";
}
Code language: PHP (php)
How to Run the Perl Script
1๏ธโฃ Save the script as list_p4_clients.pl
2๏ธโฃ Replace "perforce.company.com:1666" and "your_username" with your actual Perforce server details
3๏ธโฃ Open a terminal and run:
perl list_p4_clients.pl
Code language: CSS (css)
4. Explanation
โ p4 clients -l retrieves all client workspaces with detailed info
โ The script extracts the client name and last access date
โ Clients are sorted in descending order based on last access timestamp
โ Dates are converted from epoch time to human-readable format
5. Conclusion
This Ruby and Perl script allows you to efficiently list Perforce clients sorted by last access date.
I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services โ all in one place.
Explore Hospitals