
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
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
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";
}
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
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 a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I am working at Cotocus. I blog tech insights at DevOps School, travel stories at Holiday Landmark, stock market tips at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at I reviewed , and SEO strategies at Wizbrand.
Please find my social handles as below;
Rajesh Kumar Personal Website
Rajesh Kumar at YOUTUBE
Rajesh Kumar at INSTAGRAM
Rajesh Kumar at X
Rajesh Kumar at FACEBOOK
Rajesh Kumar at LINKEDIN
Rajesh Kumar at PINTEREST
Rajesh Kumar at QUORA
Rajesh Kumar at WIZBRAND